c语言 伪 随机数 小结

  1. 需求: 输出[x,y]之间的随机数
  2. 算法: rand()%(y-x+1)+x
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>

//交换函数
void swap(int *a, int *b){
    int temp= 0;
    temp = *a;
    *a = *b;
    *b = temp;
}

//求两个随机数[20,40]数组的对应数组之和,存到第三个数组中。并且做冒泡排序。
int main(void){
    int a[10] = {0}, 
        b[10] = {0},
        c[10] = {0};
    int i = 0, j = 0;
    struct timeval timeNow;
    gettimeofday(&timeNow, NULL);
    srand(timeNow.tv_usec); //把当前时间, 微秒级别作为种子。

    for (i = 0; i < 10; i++){
        a[i] = rand()%21+20;
        b[i] = rand()%21+20;
        c[i] = a[i] + b[i];
        printf("%d + %d = %d\n",a[i],b[i],c[i]);
    }
    
    printf("开始冒泡排序:\n");

    for(i = 0; i< 10 -1; i++){
        for(j = 0; j< 10 -1 -i; j++){
            if(c[j] < c[j+1])
                swap(&c[j], &c[j+1]);
        }
    }

    for(i = 0; i< 10; i++){
        printf("c[%d] = %d\n",i,c[i]);
    }
    return 0;
}
时间: 2024-11-10 12:56:43

c语言 伪 随机数 小结的相关文章

C语言生产随机数的方法

尽管在计算机中并没有一个真正的随机数发生器,但是可以做到使产生的数字的重复率很低,以至于它们看起来是随机的.实现这一功能的程序叫做伪随机数发生器.有关如何产生随机数的理论有许多,这里不讨论这些理论及相关的数学知识.因为讨论这一主题需要整整一本书的篇幅.这里要说的是,不管你用什么办法实现随机数发生器,你都必须给它提供一个被称为"种子(seed)"的初始值,而且这个值最好是随机的,或者至少是伪随机的."种子"的值通常是用快速计数寄存器或移位寄存器来生成的.本文中,笔者将

C语言中随机数相关问题

用C语言产生随机数重要用到rand函数.srand函数.及宏RAND_MAX(32767),它们均在stdlib.h中进行了声明. int rand(void);//生成一个随机数 voidsrand(unsigned int seed); //为rand设置"种子"的值 srand()就是给rand()提供种子seed,如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的.通常的做法是以这样一句代码: srand((unsigned)time(NULL)); 来取

用c语言产生随机数的方法

用c语言产生随机数的方法 一. //************************************ 伪随机数 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数. rand(产生随机数)表头 #include<stdlib.h>定义函数 int rand(void)函数说明rand()会返

【编程开发】C语言中随机数rand使用注意事项

[编程开发]C语言中随机数rand使用注意事项 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:随机数在编程开发中非常重要,以C语言中的rand函数为例,使用时需要注意随机数的随机体现在哪里,比如是程序在不同的时刻执行时,相同位置的随机数是否需要一样,还是要每次执行生成的随机数也要不一样,等等,这些都是需要加以关注的地方. 经测试,发现,在不使用srand这个随机数种子的情况下:每次运行生成的随机数都是一样的.有的时候是需要这样子的,当然可以直接使

C语言产生随机数(伪)

C语言的获取随机数的函数为rand(), 可以获得一个非负整数的随机数.要调用rand需要引用头文件stdlib.h.要让随机数限定在一个范围,可以采用模除加加法的方式.要产生随机数r, 其范围为 m<=r<=n,可以使用如下公式:rand()%(n-m+1)+m其原理为,对于任意数,0 <= rand()%(n-m+1) <= n-m (即rand()%(n-m+1)生成的随机数是在0到n-m之间的) 于是0+m <= rand()%(n-m+1)+m <= n-m+

各种语言产生随机数的方法

C/C++: 1 /* 2 c++中不能用random 3 rand()返回0--RAND_MAX之间均匀分布的伪随机整数, 4 rand()不接收参数,随机数生成器总以相同的种子开始,默认以1为种子 5 srand()可以指定不同的数为种子, 6 RAND_MAX等于32767 7 */ 8 const int MAX(100); 9 srand((unsigned)time(NULL));//一个以当前时间开始的随机种子,应该放在循环语句前面 10 for (int i = 0; i !=

c语言产生随机数的方法

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a). 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,

字符串、异常、随机数小结

一.字符串 1.String字符串 String字符串的底层是char数组实现的,且是final修饰的,因此String字符串发生拼接.截取等都会有新的对象生成且一旦创建它的值是不能改的. 2.StringBuffer字符串 StringBuffer也是字符串,但是它相当于一个容器,可以不断的根据自身内容扩展容量,因此,StringBuffer不论怎样发生拼接.截取等,始终都只会有本身这一个对象.因为它相当于于一个容器,可随意扩展,因此特具有增删改查的操作. 3.StringBuilder字符串

c语言产生随机数

#include <stdio.h> #include <time.h>//time的头文件 #include <stdlib.h>//rand的头文件 int main() { srand((int)time(NULL));//设种子 for(int i=0;i<10;i++) { int num=rand()%100+1;//产生1-100之间的数 printf("%d ",num); } return 0; } ........ 这是两次