1

可能重复:
如何从一个范围内生成一个随机数 - C

你将如何生成一个介于 1 和 N-1 之间的随机数,其中 N 是用户输入的数字?

到目前为止,我的代码是:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int number = 0; //number variable
    printf("This program will ask you for a number, an integer, and will print out a    random number from the range of your number 1, to N-1.");//output that explains the program's purpose and use to the user.
    //gets the input
    fgets(buffer, sizeof(buffer), stdin);
    sscanf(buffer, "%d", &number); //gets the input and stores it into variable number

    return (0);

}

4

4 回答 4

1

这是随机参考的链接。

http://www.cplusplus.com/reference/cstdlib/rand/

您可以使用

数 = 兰德() % n + 1;

于 2013-01-18T17:09:51.483 回答
1

根据您希望数字的“随机”程度,您可以使用rand()标准 libc 中的函数。此函数将生成 0 和 RAND_MAX 之间的数字。然后,您可以使用模运算获得良好范围内的结果。

请注意,此生成器(LCG)既不适合加密应用,也不适合科学应用。

如果您想要更合适的生成器,请查看 Mersenne Twister 等生成器(尽管仍然不是加密安全的)。

于 2013-01-18T17:11:12.180 回答
1

尝试这样的事情: -

unsigned int
randomr(unsigned int min, unsigned int max)
{
       double x= (double)rand()/RAND_MAX;

       return (max - min +1)*x+ min;
}

查看此链接:- http://c-faq.com/lib/randrange.html

于 2013-01-18T17:12:17.500 回答
0

你需要看看rand。一点数学,你有一个解决方案。

于 2013-01-18T17:08:29.790 回答