首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成项目和使用srand

生成项目和使用srand
EN

Stack Overflow用户
提问于 2012-07-21 17:54:55
回答 2查看 659关注 0票数 0

我正在创建一个游戏,我目前正在研究随机下降系统。

我计划创建一个随机ID,这反过来是一个项目的设计。如果我将相同的ID传递给createItem函数两次,它应该创建完全相同的项。

不管怎么说。当我创建ID时,我计划使用输入,以便能够让一些敌人更频繁地丢弃某个物品。例如,假设函数看起来像这样:

代码语言:javascript
复制
void randID(int level, int diff, float wepChance, float armChance);

如果我在调用函数时将wepChance设置为10% (0.1),我真的希望它有10%的概率掉下武器。如何将此输入与rand()srand()一起使用?srand到底是如何工作的(除了创建一个种子之外,我还没有发现任何其他的东西)。

我想我可以写我自己的代码,使它真正成为10%的机会,但我可以使用srand来实现同样的结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-21 17:58:11

srand在这方面帮不了你。

如果你想要有10%的概率发生某些事情,那么使用下面这样的代码:

代码语言:javascript
复制
int x = rand();

bool hasOccurred = (x < (RAND_MAX * 0.1));

这不会恰好是10%,因为RAND_MAX可能不会被10整除,但我想对于您的应用程序来说,它已经足够近了。

票数 2
EN

Stack Overflow用户

发布于 2012-07-21 18:03:01

srand和rand是“伪随机数生成器”。srand的意思是“种子随机”,通常与“time(NULL)”连用;

代码语言:javascript
复制
srand(time(NULL)); //Guarantees, that you won't get the exact same row of numbers twice.
rand()%100;        //For example.

关于你的输入问题:就像掷骰子一样。假设你的数字是0-99 ( % 100),你说“ItemID 1”表示结果< 10。在这种情况下,这意味着有10 %的概率。

rand不是最可靠的随机数生成器,不应该用于密码问题(因为行在数学上是可预测的),但对于游戏,它应该可以很好地工作。

这有帮助吗?

啊,是的,用代码说话。

代码语言:javascript
复制
srand(time(NULL));         //Initializes the random number generator. (Call once)
randID(1, 5, 0.1, 0.2);    //Assuming some parameters here

void randID(int level, int diff, float wepChance, float armChance) {        
    int Rand = rand()%100;
    wepChance *= 100;    //Maximum dice roll for a weapon
    armChance = wepChance + (armChance * 100); //Maximum dice roll for an arm.
    if(Rand <= wepChance) //doWeapon
    else if(Rand > WepChance && Rand < armChance) //doArm
}

这是未经测试且相当粗糙的代码,但我认为您知道我在说什么。毕竟,我不太清楚你到底想做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11591168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档