几种简单的随机数算法

(1)产生一个范围内的随机数

[cpp]  view plain  copy
  1. j = (int)(100.0 * rand()/(RAND_MAX + 1.0))//产生0到100的随机数  
(2)筛选型随机数

[html]  view plain  copy
  1. x = random(100);  
  2. while(x == 6){  
  3.     x = random(100);  
  4. }      //产生0 - 99的随机数但不能是6       
(3)从一段连续的范围内取随机数

[html]  view plain  copy
  1. x = random(11) + 40;      //产生40-50范围内的随机数  
产生一定范围内的随机数的通用算法公式:

  • 要取得[a,b)范围内的随机整数,使用(rand() % (b - a)) + a   (结果值包含a不包含b)

  • 要取得[a,b]范围内的随机整数,使用(rand() % (b - a + 1)) + a(结果值包含a,b)

  • 要取得(a,b]范围内的随机整数,使用(rand() % (b - a)) + a + 1(结果值包含b不包含a)

  • 即(通用公式:a + rand()%n;取得[a,a+n)范围内的随机整数,其中a是起始值,n是整数的范围)

  • 要取得[a,b)范围内的随机整数,另一种表示:a + (int)(b - a) * rand() / (RAND_MAX + 1.0)

  • 要取得[a,b]范围内的随机整数,另一种表示:a + (int)(b - a) * rand() / RAND_MAX

  • 要取得[0,1]之间的浮点数,可以使用rand() / (double)RAND_MAX
可以用来设置装备强化的成功率,副本装备的掉落率,通关奖励翻倍的概率,攻击暴击的概率,攻击MISS的概率,梦幻西游里碰到变异宝宝的概率等。


总结:

  • 计算机的伪随机数是由随机数种子根据一定的计算方法计算出来的数值,所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。
  • 只要用户或第三方不设置随机种子,那么在默认情况下随机种子值为1,来自系统时钟
来源:《Windows游戏编程从零开始》  作者:毛星云
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值