获得以当前时间为种子的随机数

  static  void  main(String[] args) {
         long  t = System.currentTimeMillis(); //获得当前时间的毫秒数
         Random rd =  new  Random(t); //作为种子数传入到Random的构造器中
         System.out.println(rd.nextInt()); //生成随即整数
     }
}
追问
那如果说要生成1到100以当前时间为种子的随机数呢?
追答
1
2
3
//传入一个范围参数就可以控制了
System.out.println(rd.nextInt( 100 )); //生成随即整数 0~99包含0 也包含 99
System.out.println(rd.nextInt( 101 )); //生成随即整数 0~100包含0 也包含 100
以下是一个以系统时间作为种子且不使用任何头文件的C语言随机数生成函数的示例代码: ```c // 定义一个全局变量用于保存种子值 unsigned int seed = 0; // 获取系统时间的函数 unsigned int getTime() { unsigned int time = 0; // 通过汇编嵌入获取系统时间 asm volatile("rdtsc" : "=a"(time)); return time; } // 生成随机数的函数 int generateRandomNumber() { // 使用系统时间作为种子 if (seed == 0) { seed = getTime(); } // 线性同余法生成伪随机数 seed = (seed * 1103515245 + 12345) % (1 << 31); return seed; } int main() { int random_num = generateRandomNumber(); // 打印随机数 printf("Random number: %d\n", random_num); return 0; } ``` 在上面的示例中,我们定义了一个全局变量 `seed` 来保存种子值。然后,我们使用 `getTime()` 函数获取系统时间,并将其作为种子值。 接下来,我们使用线性同余法生成伪随机数。具体而言,我们使用公式 `seed = (seed * 1103515245 + 12345) % (1 << 31)` 来更新种子值,并返回该值作为生成的随机数。 在 `main()` 函数中,我们调用 `generateRandomNumber()` 函数来生成随机数,并将其赋值给 `random_num` 变量。最后,我们使用 `printf` 函数打印出生成的随机数。 请注意,由于这是一个简单的示例,使用的是伪随机数生成算法,并且没有考虑到种子的周期性和重复性问题。如果需要更强大和高质量的随机数生成,请考虑使用标准库提供的函数,如前面示例中所示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值