【发布时间】:2016-06-30 02:52:11
【问题描述】:
我有一个函数可以生成 0-255 之间的数字,但它也会生成负值。请给点建议。
char* generateRandomNumbers()
{
static unsigned char random[9];
srand(0);
static int i = 0;
for(;i<9;i++)
{
random[i] = rand() % (256);
}
return (char*)random;
}
打印数字:
char* random = generateRandomNumbers();
for (int i = 0; i < 9; i++) {
printf("%d\n", random[i]);}
【问题讨论】:
-
当你提到“你的 rand()”时,你指的是 rand() 还是 generateRandomNumbers() ?
-
为什么
i是静态的?为什么random[]是静态的?当您要求随机数时,为什么要返回char *?您是否阅读过如何将位解释为有符号或无符号数字?为什么不letrand()生成您的号码,而不是使用char的数组? -
您将它们存储在
unsigned chars....它们不能在那里是负数。你是如何打印它们的? -
问题:如果
generateRandomNumbers被调用两次会发生什么? -
旁注:never use
rand()for anything related to cryptography... 随机生成器正在改进,但在 Unix 平台上使用/dev/urandom可能是您的最佳选择