Vb.net 如何避免数字重复(所有数字应彼此不同)
如何插入另一条指令以避免数字重复,因为所有六个数字应该彼此不同 以下是我的Visual Basic模块的代码:Vb.net 如何避免数字重复(所有数字应彼此不同),vb.net,Vb.net,如何插入另一条指令以避免数字重复,因为所有六个数字应该彼此不同 以下是我的Visual Basic模块的代码: Module Loto Sub Main() Dim Value1, Value2, Value3, Value4, Value5, Value6 As Integer Console.WriteLine("Example 3: To generate six numbers from 1 to 40") Console.Wr
Module Loto
Sub Main()
Dim Value1, Value2, Value3, Value4, Value5, Value6 As Integer
Console.WriteLine("Example 3: To generate six numbers from 1 to 40")
Console.WriteLine()
'Initialize the random-number generator.
Randomize()
'Generate a random value between 1 and 40.
'Int((HighestValue - LowestValue + 1) * Rnd) + LowestValue
Value1 = CInt(Int((40 * Rnd()) + 1))
Value2 = CInt(Int((40 * Rnd()) + 1))
Value3 = CInt(Int((40 * Rnd()) + 1))
Value4 = CInt(Int((40 * Rnd()) + 1))
Value5 = CInt(Int((40 * Rnd()) + 1))
Value6 = CInt(Int((40 * Rnd()) + 1))
Do While (Value1 = Value2)
Value2 = CInt(Int((40 * Rnd()) + 1))
Loop
Console.WriteLine("Random number generated is " & Value1)
Console.WriteLine("Random number generated is " & Value2)
Console.WriteLine("Random number generated is " & Value3)
Console.WriteLine("Random number generated is " & Value4)
Console.WriteLine("Random number generated is " & Value5)
Console.WriteLine("Random number generated is " & Value6)
Console.ReadLine()
End Sub
End Module
创建一个数组1..40,获取一个随机数1..40,将该位置的值与位置(40)处的值交换,获取一个随机数1..39,并将该值与位置(39)交换。。。最后,你得到了位置35..40处的数字,创建一个数组1..40,得到一个随机数1..40,将该位置的值与位置(40)处的值交换,得到一个随机数1..39,并将该值与位置(39)交换。。。最后,你在35..40位置有数字,为你的答案创建一个数组,并在每一轮后检查:
dim resultArr(6) as integer
dim unique as boolean
for i=0 to 5
unique=false
while not unique
resultArr(i)=CInt(Int((40 * Rnd()) + 1))
for j=0 to i-1
unique=(unique OR resultArr(j)<>resultArr(i))
next
wend
next
dim resultArr(6)作为整数
dim-unique作为布尔值
对于i=0到5
唯一=错误
虽然不是唯一的
结果r(i)=CInt(Int((40*Rnd())+1))
对于j=0到i-1
unique=(unique或resultar(j)resultar(i))
下一个
温德
下一个
为您的答案创建一个数组,并在每一轮后检查:
dim resultArr(6) as integer
dim unique as boolean
for i=0 to 5
unique=false
while not unique
resultArr(i)=CInt(Int((40 * Rnd()) + 1))
for j=0 to i-1
unique=(unique OR resultArr(j)<>resultArr(i))
next
wend
next
dim resultArr(6)作为整数
dim-unique作为布尔值
对于i=0到5
唯一=错误
虽然不是唯一的
结果r(i)=CInt(Int((40*Rnd())+1))
对于j=0到i-1
unique=(unique或resultar(j)resultar(i))
下一个
温德
下一个
.NET提供了比传统VB更好的随机生成器。基本上,您希望创建一个值数组并交换它们,以便没有数字重复
这被称为洗牌,因为实际上你不是在挑选随机数,而是将一组值(如一副牌或一系列数字)放入一个随机的顺序中
Dim rValues(39) As Integer ' random values holder
Dim rand = New Random() ' NET random generator - do this ONCE
Dim temp As integer
洗牌整数数组:
For ndx As Int32 = rValues.Length - 1 To 0 Step-1
Dim r = rand.Next(n + 1) ' next value
temp = rValues(ndx) ' swap values
rValues(ndx) = rValues(r)
rValues(r) = temp
Next
如果用于一副卡片,则从r值(0)
开始选择值,直到结束。要得到6分,就拿第一个,不会有重复
作为一种就地洗牌,它非常有效。.NET提供了比传统VB更好的随机生成器。基本上,您希望创建一个值数组并交换它们,以便没有数字重复 这被称为洗牌,因为实际上你不是在挑选随机数,而是将一组值(如一副牌或一系列数字)放入一个随机的顺序中
Dim rValues(39) As Integer ' random values holder
Dim rand = New Random() ' NET random generator - do this ONCE
Dim temp As integer
洗牌整数数组:
For ndx As Int32 = rValues.Length - 1 To 0 Step-1
Dim r = rand.Next(n + 1) ' next value
temp = rValues(ndx) ' swap values
rValues(ndx) = rValues(r)
rValues(r) = temp
Next
如果用于一副卡片,则从r值(0)
开始选择值,直到结束。要得到6分,就拿第一个,不会有重复
作为一种就地洗牌,它非常有效。我喜欢上面提到的方向,即使用
随机
类,但可以使其更短:
Dim r As New Random
Dim a = Enumerable.Range(1, 40)
Dim b = a.OrderBy(Function() r.Next).Take(6)
我喜欢上面提到的方向,即使用
Random
类,但可以使其更短:
Dim r As New Random
Dim a = Enumerable.Range(1, 40)
Dim b = a.OrderBy(Function() r.Next).Take(6)
我的0.02美元
Private Shared prng As New Random
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim a As List(Of Integer) = (From x In Enumerable.Range(1, 40)
Order By prng.Next Take 6).ToList
For Each n As Integer In a
Debug.WriteLine(n)
Next
End Sub
我的0.02美元
Private Shared prng As New Random
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim a As List(Of Integer) = (From x In Enumerable.Range(1, 40)
Order By prng.Next Take 6).ToList
For Each n As Integer In a
Debug.WriteLine(n)
Next
End Sub
在代码中或在答案本身中使用伪代码会很有帮助,但除此之外,这确实是如何创建数字1到40的随机排列。在代码中或在答案本身中使用伪代码会很有帮助,但除此之外,这确实是如何创建数字1到40的随机排列。这是迄今为止最好的答案+1这是迄今为止最好的答案+1我认为您不需要在上面选择x。您也可以在
prng之后编写Take 6
。下一步是Take(6)
(避免混合查询和内联样式)。我认为您不需要在上面选择x
。您还可以编写Take 6
,紧跟在prng之后。下一步是而不是Take(6)
(以避免混合查询和内联样式)。