在随机的唯一编号? [英] Unique number in random?

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

问题描述

我知道有这件事了网上很多问题,但我想知道为什么我的方法失败,
我究竟做错了什么?



 公共类发电机
{

私人静态只读随机随机=新的随机();

私人静态只读对象的SyncLock =新的对象();

公共静态INT getRandomNumber的(INT分钟,INT最大值)
{
锁(为SyncLock)
{
返回random.Next(最小值,最大值) ;
}
}

}


[的TestFixture]
公共类的Class1
{
[测试]
公共无效SimpleTest的()
{

变种数=新的List< INT>();
的for(int i = 1; I< 10000;我++)
{
变种随机= Generator.GetRandomNumber(1,10000);
numbers.Add(随机);
}

CollectionAssert.AllItemsAreUnique(数字);

}
}



编辑
试验方法是失败的!对不起,不提



感谢您的时间和建议


解决方案

 公共静态无效FisherYatesShuffle< T>(T []数组),
{
随机R =新的随机();
的for(int i = array.Length - 1; I> 0;我 - )
{
INT J = r.Next(0,I + 1); $ B $(B T)临时=阵列[J]。
阵列[J] =阵列[我]
数组[我] =温度;
}
}

INT []数组=新INT [10000]

的for(int i = 0; I< array.Length;我++)阵列[我] =我;
FisherYatesShuffle(数组);


I know there are many questions on the net about it ,but I would like to know why my method fails What Am i Doing wrong?

public class Generator
{

    private static readonly Random random = new Random();

    private static readonly object SyncLock = new object();

    public static int GetRandomNumber(int min, int max)
    {
        lock (SyncLock)
        { 
            return random.Next(min, max);
        }
    }

}


[TestFixture]
public class Class1
{
    [Test]
    public void SimpleTest()
    {

        var numbers=new List<int>();
        for (int i = 1; i < 10000; i++)
        {
            var random = Generator.GetRandomNumber(1,10000);
            numbers.Add(random);
        }

        CollectionAssert.AllItemsAreUnique(numbers);

    }
}

EDIT Test method is failing!! Sorry for not mentioning

Thanks for your time and suggestions

解决方案

public static void FisherYatesShuffle<T>(T[] array)
{
    Random r = new Random();
    for (int i = array.Length - 1; i > 0; i--)
    {
        int j = r.Next(0, i + 1);
        T temp = array[j];
        array[j] = array[i];
        array[i] = temp;
    }
}

int[] array = new int[10000];

for (int i = 0; i < array.Length; i++) array[i] = i;
FisherYatesShuffle(array);

这篇关于在随机的唯一编号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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