生成1到N-1之间的随机数

时间:2013-01-18 17:06:03

标签: c random

  

可能重复:
  How to generate a random number from within a range - 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 个答案:

答案 0 :(得分:1)

以下是随机参考的链接。

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

你可以使用

num = rand()%n + 1;

答案 1 :(得分:1)

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

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

如果您想要更合适的发电机,请查看Mersenne Twister等发电机(但仍然不是密码固定器)。

答案 2 :(得分: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

答案 3 :(得分:0)

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