随机数

实际中往往使用伪随机数。
这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。
计算机产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。

如果想要使用随机数,又想能够结果复现,可以指定随机数种子。

一般种子可以以当前的系统时间,这是完全随机的。

一个种子生成一个固定的随机数序列
清空工作空间并不能消除随机数的影响,随机数的作用时间一直到下一次重新设置随机数种子生效。所以每次设置种子是一个起点。

一旦设了一个随机数种子,后面所有随机过程都使用这个种子,跟使用次数有关。即依次使用序列里面的随机数给随机过程,在上次的序列上继续向下取随机数,直到遇到重新设置种子的命令,再重新从序列取。整个序列是固定的。

R语言

set.seed(1234)    # 设置随机数种子
lambda0 <- runif(1,min = 0,max = 0.5)  # 产生一个服从均匀分布的随机数
set.seed(seed = NULL)         # 重新初始化,就像尚未设置任何种子一样。

服从不同分布的随机数参见:https://blog.csdn.net/zhyoulun/article/details/46413727

总结:

若采用随机数种子100,它将生成一个随机数序列,如果再次启动set.seed(100),它则按照之前的序列从头开始生成随机数,两次生成的随机序列相同。

C语言

生成[a,b]之间随机数:rand()%(b-a+1)+a
原理:rand()%(b-a+1)是产生 0~(b-a) 的随机数,后面+a保证下限是0+a=a,最大就是 b-a+a=b

#include <stdio.h>     
# include <stdlib.h>   // 使用rand()函数
# include <time.h>     // 设定随机数种子

int main()
{
  srand((unsigned int)time(NULL));     // 以当前时间作为种子
  a=rand()%100+1;                      // 生成[1,100]随机数
  printf("本次产生的随机数为:%d\n", a);
  return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值