random不重复随机数,random不重复随机数c#

http://www.itjxue.com  2023-01-20 00:43  来源:未知  点击次数: 

random 怎么实现随机数不重复方法 java

java中实现随机数不重复主要思想是使用hashset来保存每个生成的数据,因为set集合本身内部机制实现了不保存相同的数据,代码如下:

?/**

?*?随机指定范围内N个不重复的数

?*?利用HashSet的特征,只能存放不同的值

?*?@param?min?指定范围最小值

?*?@param?max?指定范围最大值

?*?@param?n?随机数个数

?*?@param?HashSetInteger?set?随机数结果集

?*/

????public?static?void?randomSet(int?min,?int?max,?int?n,?HashSetInteger?set)?{

????????if?(n??(max?-?min?+?1)?||?max??min)?{

????????????return;

????????}

????????for?(int?i?=?0;?i??n;?i++)?{

????????????//?调用Math.random()方法

????????????int?num?=?(int)?(Math.random()?*?(max?-?min))?+?min;

????????????set.add(num);//?将不同的数存入HashSet中

????????}

????????int?setSize?=?set.size();

????????//?如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小

????????if?(setSize??n)?{

???????? randomSet(min,?max,?n?-?setSize,?set);//?递归

????????}

????}

C# Random.Next()产生不重复随机数

获取随机数,苦恼重复问题;

在循环中,rd.Next()会由于默认的时间间隔太小而产生出重复随机数,解决方案有两种:

random的构造函数提到循环外,适用于方法内部使用

Random rd = new Random();

for(int i=0;i10;i++){

? ? int seed=rd.Next();

}

2.使用guid作为随机数种子,适用于高频次调用一个生成方法或过程

//外部多次调用

for(int i=0;i10;i++){

? GetRandom();

}

public int GetRandom(){

? ? Random rd = new Random(Guid.NewGuid().GetHashCode());

? ? return rd.Next();

}

java中如何用random函数产生不重复的随机数

废话不多说直接上代码!

import java.util.ArrayList;

import java.util.Random;

public class Test {

public static void main(String[] args) {

// 生成 [0-n) 个不重复的随机数

// list 用来保存这些随机数

ArrayList list = new ArrayList();

int n = 10;

Random rand = new Random();

boolean[] bool = new boolean[n];

int num = 0;

for (int i = 0; i n; i++) {

do {

// 如果产生的数相同继续循环

num = rand.nextInt(n);

} while (bool[num]);

bool[num] = true;

list.add(num);

}

System.out.println(list);

}

}

(责任编辑:IT教学网)

更多

推荐人物新闻文章