2014-10-22 76 views
0

我做了一个小随机数发生器,它不能正常工作。下面的代码...随机数发生器不能正常工作

我有一个函数,

short rnd(short *num){ 
    return (rand() % max) + 1; 
} 

具有原型的

short rnd(short *num); 

当我用这个,我做这样的事情:

max = 10; 
num = rnd(&max); 

编译器抛出没有问题,但它总是等于0 ... 有什么建议吗?

+5

之间的随机数'max'必须为代码编译一个全局变量。你的意思是'* num'而不是'max'?另外,如果你不分配给'* num',为什么你将它作为指针传递? – 2014-10-22 00:38:03

+0

这是,对不起。它在包含的头文件中... – 2014-10-22 00:39:29

+0

同意Jonathan以及为什么使用指针? – ForguesR 2014-10-22 00:39:50

回答

4

首先看起来你的max是一个全局变量。我建议把它传递给你的RND函数作为参数,而不是使其成为全球性的,如果它在运行时不改变只是创建一个宏为您max和传递英寸

short rnd(unsigned short max) 
{ 
    return (rand() % max) + 1; 
} 
0

为了有一个真正的随机数,它需要种子。种子的最好方法是使用标准库中srand()的计算机时间。

#include <stdlib.h> 
#include <time.h> 
srand(time(NULL)); /*this in the main function*/ 

short rndnum(short max) 
{ 
    return (short) (rand() % max) + 1; 
} 

这应该产生1和10