在VB.NET,我试图找出究竟如何生成使用特定数字的固定长度的数字。
我已经看到了这些问题,但它们不包括什么,我在寻找:
如何生成Java中的特定范围内的随机整数?
产生使用C#的范围内的随机数
如何生成与蟒蛇的特定长度的随机数
生成随机字符串数组
生成9位,包括前导零的随机数
我想产生只使用1 个 ,2个,3个和4个4位数字。
这将是这样的:
1234
2134
3124
2143
2431
2413
等等...
能否给我一个人解释如何可以做到这一点?
正如注释说明,后叶开放的几个问题。 按照现在的情况确实没有很多工作要做Random
。 这听起来像你想N
从这些四个数字值,利用每一个一次。 起点此Permutation
类由比约恩-罗杰Kringsjå一个伟大的答案创建的数字组合的列表(一定要给予好评的话)。
Dim Combos = Permutation.Create("1234".ToCharArray())
Dim intVals = Combos.ConvertAll(Of Int32)(Function(s) Int32.Parse(s)).
OrderBy(Function(r) RNG.Next()).
ToArray()
- 第一部分得到24元件的组合,然后
- 将结果转换成整数
- 然后随机化的顺序,并把它在阵列中。
如果您并不意味着“价值”,但字符串(指具有长度听起来更像是数字的字符串值),只跳过ConvertAll
一步。 如果你只需要几下,就可以添加.Take(5)
后OrderBy
抓住5只(例如)。
就个人而言,由于只有 24个可能的(非重复)组合,我将它们粘贴到代码作为数组和使用,作为起点,除非“1234”的一部分是动态的。
也可以看看:
这将产生使用最小和最大(1 - 4)以数字形式提供(4)为一个字符串的长度的设置。 如果您需要使用整数,当然,你就会有它的产生之后,做铸造。 还可以有一些时髦发生这种情况,如果分<0和max> 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
干得好。
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
文章来源: How to generate random numbers using only specific digits, e.g [1234] [4213] [3124]