C语言怎么编写指定个数的随机数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎么编写指定个数的随机数?相关的知识,希望对你有一定的参考价值。

RT,本人只是业余编程,过程中必须用到随机数。但我对随机数不是很了解,谁能给个例子怎么编写。
我想要随机产生数个随机数(从键盘输入个数),随机数范围是从0到217。应该怎么编写?

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)

int i;
int num;
printf("请决定产生多少随机数:\n");
scanf(" %d",&num);
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<num; i++)
printf("%d\n", rand() % 100);
return 0;

楼主看下可以吗?
如果你要接受就用一个数组!
srand(unsigned int)是一个初始化随机数发生器!
参考技术A 舍伍德,拉斯维加斯算法看看你能不能看懂。由于硬件原因,可能用函数生成的随机数并不是那么准确,随机性可能不是那么好吧 参考技术B #include <stdlib.h>

int rand(void);

void srand(unsigned int seed);

参考资料:man

Java语言第四讲

1.纯随机数发生器

Xn+1=(aXn + c)mod m

Modulus=2^31-1=int.MaxValue

Multiplier=7^5=16807

C=0

当显示过2^31-2个数之后,才可能重复。

动手动脑: 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。

package 纯随机数;    
public class Suiji
{
        private static final int N = 200;
        private static final int LEFT = 40;
        private static final int RIGHT = 1000;
        private static long x0 = 1L;
        private long a = 1103515245L;
        private long c = 12345L;
        private long m = 2147483648L;
        // 产生随机数
        private long rand ( long r )
        {
          // a,c,m为常数
          r = ( r * a + c ) % m;//Xn+1=(aXn + c)mod m线性同余生成器
          return r;
        }
        /*表示a~b之间的一个随机数*/
        private long little ( int a, int b, long rand )
        {
          return a + rand % ( b - a + 1 );
        }
        private void recursion ( int count, long rand )
        {
         if (count >= N)
         {return;}
         rand = rand (rand);
         long r = little (LEFT, RIGHT, rand);
         System.out.print (r + " ");
         recursion (++count, rand);
        }
        public static void main ( String[] args )
        {
         Suiji recur = new Suiji ();
         recur.recursion (0, x0);
        }
}

2.动手动脑:

请看以下代码,你发现了有什么特殊之处吗?

// MethodOverload.java
// Using overloaded methods
public class MethodOverload {

    public static void main(String[] args) {
        System.out.println("The square of integer 7 is " + square(7));
        System.out.println("\nThe square of double 7.5 is " + square(7.5));
    }

    public static int square(int x) {
        return x * x;
    }

    public static double square(double y) {
        return y * y;
    }
}

结果:

The square of integer 7 is 49

The square of double 7.5 is 56.25

特殊之处:

上述示例代码展示了Java的“方法重载(overload)”特性。 满足以下条件的两个或多个方法构成“重载”关系:

(1)方法名相同; (2)参数类型不同,参数个数不同,或者是参数类型的顺序不同。 注意:方法的返回值

不作为方法重载的判断条件。

 

以上是关于C语言怎么编写指定个数的随机数?的主要内容,如果未能解决你的问题,请参考以下文章

用c语言怎么生成20个[0,20]不相等的随机数?

Java语言第四讲

c语言中怎么随机抽选100个数字并排序?

用C语言编程0—1的一组随机数

C语言随机整数编程问题?

用C语言随机产生三个数,三个数之间进行四则运算,四则运算也随机产生