随机数生成不重复的一组数(类似于抓阄)
2014-09-23 11:43
218 查看
1.思想:生成0到99这一百个随机数为例。先用个长度为100数组,值是对应的索引编号。然后把随机数生成函数的上限设置成100(即100以下的随机数)。生成的随机数当作数组的索引值,把这个索引值对应的值和数组的最后一位交换。这样第一个随机数就产生了并且存放在数组的最后一位中。在然后把随机数生成函数的上限值设置成99(即99一下的随机数),又得到一个随机数,再当作数组的索引值和数组的倒数第二位的值交换。这样就得到第二个随机数并存在数组的倒数第二位。
2.例子:a.假如数组arr,第一次产生的随机数是50
b.arr[50]和arr[99]交换值,arr[50]值为99,arr[99]值为50;
c.加入第二次随机数是60
d.则arr[60]和arr[98]交换值,即arr[60]值为98,arr[98]值为60;
e.如此循环下去。
3.C#代码:
for (int i = 0; i < 100;i++ )
{
numbers[i] = i;
}
Random rd = new Random();
int iup = numbers.Count();
for (int i = 0; i < 99; i++)
{
int result = rd.Next(iup);
int temp;
temp = numbers[result];
numbers[result] = numbers[iup - 1];
numbers[iup - 1] = temp;
iup--;
}
2.例子:a.假如数组arr,第一次产生的随机数是50
b.arr[50]和arr[99]交换值,arr[50]值为99,arr[99]值为50;
c.加入第二次随机数是60
d.则arr[60]和arr[98]交换值,即arr[60]值为98,arr[98]值为60;
e.如此循环下去。
3.C#代码:
for (int i = 0; i < 100;i++ )
{
numbers[i] = i;
}
Random rd = new Random();
int iup = numbers.Count();
for (int i = 0; i < 99; i++)
{
int result = rd.Next(iup);
int temp;
temp = numbers[result];
numbers[result] = numbers[iup - 1];
numbers[iup - 1] = temp;
iup--;
}
相关文章推荐
- java 生成一组不重复的随机数
- 利用HashSet生成一组不重复的随机数
- 生成一组不重复随机数
- JS 生成一组不重复的随机数
- scala随机数生成,生成一组不重复随机数算法
- JS 生成一组不重复的随机数
- 返回一组不重复随机数生成方法-(完美,100%不重复)
- C/C++: 生成不重复的一组随机数
- java 生成一组不同的随机数(不重复)
- 生成指定范围不重复的随机数
- 随机生成Z-A0-9的6位不重复的随机数(100000起)
- PHP如何批量生成手机号-使用PHP 如何生成一组不重复的手机号码?
- C# 生成随机数重复问题
- 用C#生成不重复的随机数
- C#生成100个不重复的随机数算法(转)
- 0-100 之间 生成50个不重复的随机数, 高效执行
- java使用hashset生成1-20的随机数并不重复并打印
- java 生成不重复的随机数
- VBS 生成不重复随机数代码[0-10]
- Math生成指定范围内不重复的随机数方法