之后立即使用 rand() 和 srand(time(NULL)) 不会生成新的随机数
Using rand() and srand(time(NULL)) right after doesn't generate a new random number
for (x = 1; x < 10; x++)
{
(armoPtr + x) ->def = rand() % b + a;
if ((armoPtr + x) -> def > b)
(armoPtr + x) -> def = b;
srand(time(NULL));
(armoPtr + x) -> hp = rand() % 5 + 1;
srand(time(NULL));
(armoPtr + x) -> valOItem = rand() % (lvlpnts + 1) + max(lvlpnts);
if ((armoPtr + x) -> valOItem > (lvlpnts + 1))
(armoPtr + x) -> valOItem = (lvlpnts + 1);
(armoPtr + x) -> valOItem *= 10;
srand(time(NULL));
}
如果这是一个非常平庸的错误,请原谅我,但是这个循环不应该每次循环都有新的随机数吗?我还在 Com Sci 第一年的第二个学期。对不起,如果我很烂。哈哈哈哈
在开始抽取随机数之前调用一次srand
srand(time(NULL));
for (x = 1; x < 10; x++)
{
然后在循环内调用 top rand():
srand(time(NULL));
for (x = 1; x < 10; x++)
{
(armoPtr + x) ->def = rand() % b + a;
if ((armoPtr + x) -> def > b)
(armoPtr + x) -> def = b;
(armoPtr + x) -> hp = rand() % 5 + 1;
(armoPtr + x) -> valOItem = rand() % (lvlpnts + 1) + max(lvlpnts);
if ((armoPtr + x) -> valOItem > (lvlpnts + 1))
(armoPtr + x) -> valOItem = (lvlpnts + 1);
(armoPtr + x) -> valOItem *= 10;
}
在同一秒内多次向 srand 中输入 time(NULL) 将使您从头开始绘制相同的数字,因为 time(NULL) 的粒度是秒。
for (x = 1; x < 10; x++)
{
(armoPtr + x) ->def = rand() % b + a;
if ((armoPtr + x) -> def > b)
(armoPtr + x) -> def = b;
srand(time(NULL));
(armoPtr + x) -> hp = rand() % 5 + 1;
srand(time(NULL));
(armoPtr + x) -> valOItem = rand() % (lvlpnts + 1) + max(lvlpnts);
if ((armoPtr + x) -> valOItem > (lvlpnts + 1))
(armoPtr + x) -> valOItem = (lvlpnts + 1);
(armoPtr + x) -> valOItem *= 10;
srand(time(NULL));
}
如果这是一个非常平庸的错误,请原谅我,但是这个循环不应该每次循环都有新的随机数吗?我还在 Com Sci 第一年的第二个学期。对不起,如果我很烂。哈哈哈哈
在开始抽取随机数之前调用一次srand
srand(time(NULL));
for (x = 1; x < 10; x++)
{
然后在循环内调用 top rand():
srand(time(NULL));
for (x = 1; x < 10; x++)
{
(armoPtr + x) ->def = rand() % b + a;
if ((armoPtr + x) -> def > b)
(armoPtr + x) -> def = b;
(armoPtr + x) -> hp = rand() % 5 + 1;
(armoPtr + x) -> valOItem = rand() % (lvlpnts + 1) + max(lvlpnts);
if ((armoPtr + x) -> valOItem > (lvlpnts + 1))
(armoPtr + x) -> valOItem = (lvlpnts + 1);
(armoPtr + x) -> valOItem *= 10;
}
在同一秒内多次向 srand 中输入 time(NULL) 将使您从头开始绘制相同的数字,因为 time(NULL) 的粒度是秒。