如何只用具体的数字,例如,生成随机数[1234] [4213] [3124](How to gene

2019-09-29 16:53发布

在VB.NET,我试图找出究竟如何生成使用特定数字的固定长度的数字。

我已经看到了这些问题,但它们不包括什么,我在寻找:
如何生成Java中的特定范围内的随机整数?
产生使用C#的范围内的随机数
如何生成与蟒蛇的特定长度的随机数
生成随机字符串数组
生成9位,包括前导零的随机数

我想产生使用1 ,2个,3个和4个4位数字。
这将是这样的:

1234  
2134  
3124  
2143  
2431  
2413  

等等...
能否给我一个人解释如何可以做到这一点?

Answer 1:

正如注释说明,后叶开放的几个问题。 按照现在的情况确实没有很多工作要做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”的一部分是动态的。

也可以看看:

  • 字符串的置换。 排列或组合?
  • 计算排列


Answer 2:

这将产生使用最小和最大(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


Answer 3:

干得好。

    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]