一个NB的随机算法

游戏中的随机算法:模拟概率上升效果
本文探讨了在游戏开发中如何实现一个随机算法,以模拟概率随尝试次数增加而升高的效果。通过创建一个包含不同概率基础值的数组,并在每次检查时与随机数比较,可以实现概率的逐渐提升。例如,模拟10%的概率,随着尝试次数N的增加,实际概率会变为1475*N,一旦触发成功,N须重置为零。这种算法提供了对概率动态调整的可能性。

在游戏中,大家会经常使用随机算法,但是如何选择一个好的伪随机?

这里提供一个思路:

这里提供了一个数组,有101个数据 ,分别代表%0 -  100%, base数组中每个元素值 都是该概率的基础值,比如对于10%的概率,base[10]它的基础值为1475 (其实这里都是乘以100000了,它本身应该是0.01475 ),  当第一次check时, 在0- 100000中随机一个值与1475*1  对比 , 当第二次check时, 实际上与 1475  *2  对比, 当第N次check时, 实际与  1475  *N 对比,  也就是说,次数越多,概率会升高,从而达到模拟10%的效果, 一旦触发成功, N值必须清零。

 

#define _CRT_RAND_S

#include <string>  
using namespace std;

#define PERCENT  100


//产生随机数,其中范围为min~max
unsigned int Range(int min, int max)
{
	errno_t err;
	unsigned int number;
	err = rand_s(&number);
	if (err != 0)
	{
		return 0;//产生失败,返回0
	}
	unsigned temp1 = (unsigned int)((double)number / ((double)UINT_MAX + 1) * double(max - min))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员乐逍遥

如果你觉得帮助了你,支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值