最近做排序测试 使用random生成随机数全部一样 估计是因为random采用的随机种子为时间戳 而一个循化执行消耗的时间没有到时间戳的最小单位 故没有变化 Thread.Sleep(10); 使用睡眠函数后恢复正常 但这种方法比较低效可以采用自定义的随机种子 Random类提供自定义一个int作为随机种子的函数 Random r = new Random((int)DateTime.Now.Ticks); 这样重复率就大大降低了
import java.util.Random; /** * @author HP * @date 2019/4/16 */ public class randomTest { public static void main(String[] args) { Random random = new Random(); //生成64-128内的随机数 int i = random.nextInt() * (128 - 64 + 1) + 64; /** * 生成 [m,n] 的数字 * int i
Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数学算法选择的,但是从实用的角度而言,其随机程度已足够了. 伪随机数的生成是从种子值开始.如果反复使用同一个种子,就会生成相同的数字系列.产生不同序列的一种方法是使种子值与时间相关,从而对于 Random 的每个新实例,都会产生不同的系列.默认情况下,Random 类的无参数构造函数
需求:生成100个游戏礼包码 具体如下 # 1.构造100个5位随机数 listNumA = [] for n in range(100): listNumA.append(random.randint(10000, 99999)) # 2.对上述100个筛除重复值 listNumB = list(set(listNumA)) # 将得到的list赋值给新的list,避免后序的for循环中,每次进行set操作,导致速度很慢 for n in range(100): print(listNumB[