随机数字问题 [英] Problem with randomize numbers

查看:60
本文介绍了随机数字问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好
我对随机数组有问题.我需要有许多随机数,但它们必须完全不同.如果程序生成12,则下次必须生成另一个数字(而不是12)!!!

我写了这段代码:

Hello
I have a problem with random array. I need to have many randomize numbers but they have to be all dissimilar. If program generates 12, it must generate another number next time (not 12)!!!

I wrote this code:

List<int> rn = new List<int>();
Random r = new Random();
bool br = true;

for (int p = 0; p < 10; p++)
{
    int i=0;
    while (true)
    {
        i = r.Next(1, 11);
        foreach (int a in rn)
        {
            if (a == i)
                br = false;
        }
        if (br == true)
            break;
    }
    rn.Add(i);
}



但是4或5个数字之后,它的续航时间非常糟糕.
请帮助我.:confused:



but after 4 or 5 numbers it is prolonging very bad.
help me please.:confused:

推荐答案


我写了一个提示,我认为它可以提供帮助.

如何生成许多随机的各种数字? [ ^ ]

简要地:

Hi,
I''ve written a tip and I think it can help.

How to generate many random various numbers?[^]

briefly:

//C#
public static int RandomNumber(ref List<int> numbers, Random random)
{
    int count = numbers.Count;
    int randomIndex = random.Next(0, count);
    int returnedNumber = numbers[randomIndex];
    numbers.RemoveAt(randomIndex);
    return returnedNumber;
}



使用该方法的必要条件是拥有一个随机变量和一个数字列表,例如:



It''s requisite for using the method, to have a random variable and a list of numbers, for example:

//C#
Random random = new Random();
List<int> numbers = new List<int>();
for (int i = 0; i <= 1000; i++)
{
    numbers.Add(i);
}
//Ok, For each using the method, there is a new and defferent random number:
Console.WriteLine(RandomNumber(ref numbers, random));
Console.WriteLine(RandomNumber(ref numbers, random));
Console.WriteLine(RandomNumber(ref numbers, random));
Console.WriteLine(RandomNumber(ref numbers, random));
Console.WriteLine(RandomNumber(ref numbers, random));
Console.ReadKey();



而且我认为您会看到良好的性能.



And I think you''ll see a good performance.


您应该在
br=true;

循环之前设置

foreach (int a in rn)



附录
试试这个:

loop

addendum
Try this :

for (int p = 0; p < 10; p++)
{
    int i=0;
    while (true)
    {
        i = r.Next(1, 11);
        if (!rn.Contains(i))
        {
            rn.Add(i);
            break;
        }
    }
}



干杯



Cheers


这篇关于随机数字问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆