在VB.NET中,我试图弄清楚如何使用特定的数字生成固定长度的数字。
我已经看到了这些问题,但它们没有涵盖我正在寻找的内容:
How do I generate random integers within a specific range in Java?
Produce a random number in a range using C#
How to generate random number with the specific length in python
Generating an array of random strings
Generation 9 digits random number including leading zero
我正在尝试使用仅 1,2,3和4生成4位数字。
它会是这样的:
{{1}}
等...
有人可以向我解释如何实现这一目标吗?
答案 0 :(得分:4)
正如评论所指出的,这篇文章留下了几个问题。目前,与Random
并无关系。 听起来像你想要用这四个数字制作的N
值,每次使用一次。这个Permutation
class的起点是Bjørn-RogerKringsjå的一个很好的答案,它创建了一个数字组合的列表(一定要赞成它)。
Dim Combos = Permutation.Create("1234".ToCharArray())
Dim intVals = Combos.ConvertAll(Of Int32)(Function(s) Int32.Parse(s)).
OrderBy(Function(r) RNG.Next()).
ToArray()
如果您不是指“值”而是字符串(指的是长度听起来更像数字字符串的值),请跳过ConvertAll
步骤。如果您只需要几个,则可以在.Take(5)
之后添加OrderBy
以仅获取5(例如)。
就个人而言,由于 只有24种可能(非重复)组合,我会将它们作为数组粘贴到代码中,并将其作为起点,除非“1234”部分是动态的
另见:
答案 1 :(得分:-1)
这将使用提供的长度(4)作为字符串提供的最小值和最大值(1 - 4)生成一个数字。当然,如果你需要使用整数,你必须在生成后进行投射。如果min<<<< 0和最大值> 9,当然。
Sub Main()
Dim min As Integer = 1
Dim max As Integer = 4
Dim length As Integer = 4
Dim ranNumFinal As String = ""
Static generator As System.Random = New System.Random()
For i = 1 To length
If i = 1 Then 'First time around
ranNumFinal = generator.Next(min, max + 1).ToString
Else
ranNumFinal = ranNumFinal.ToString & generator.Next(min, max + 1).ToString
End If
Next
Console.WriteLine(ranNumFinal)
Console.Read()
End Sub
答案 2 :(得分:-1)
你走了。
Dim r As New Random
For i As Integer = 1 To 10
Debug.WriteLine(r.Next(1, 5) * 1000 + r.Next(1, 5) * 100 + r.Next(1, 5) * 10 + r.Next(1, 5))
Next