如何仅使用特定数字生成随机数,例如[1234] [4213] [3124]

时间:2016-02-25 14:14:28

标签: .net vb.net random

在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}}

等...
有人可以向我解释如何实现这一目标吗?

3 个答案:

答案 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()
  • 第一部分得到24元素的组合,然后
  • 将结果转换为整数
  • 然后将订单随机化并将其放入数组中。

如果您不是指“值”而是字符串(指的是长度听起来更像数字字符串的值),请跳过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