srand函数和rand函数产生随机数代码示例

 最近在写东西时需要用到随机函数产生一组一定范围的不重复的数字,于是上网查资料学习了一下随机函数的使用,下面我就不赘述原理及用法了,直接上代码。


《一》加入判断,直到存储完毕为止

#include <stdio.h>
#include<time.h>

int main()
{
	srand(time(NULL));
	int i,j=0;
	int array[9]; 
	while(j<9) 
	{ 
	   array[j]=rand()%9; 
	   for(i=0;i<j;i++)
	   {
		   if(array[i]==array[j]) 
		      break; 
	   } 
	   if(i<j)
		   continue;
	   j++;
	   printf("array[%d]=%d\n",i,array[i]);
	}
	 return 0;
}


《二》先存储,不符合条件,下标减一

#include <stdio.h>
#include<time.h>

int main()
{
	srand(time(NULL));
	int i,j=0;
	int array[9]; 

	for(j=0;j<9;j++)
	{
	  array[j]=rand()%9;
	  for(i=0;i<j;i++)
	  {
		 if(array[i]==array[j])
		 {
		    i=-1;
		    array[j]=rand()%9;
		 }
	  }
	  printf("array[%d]=%d\n",i,array[i]);
	}
  return 0;
}


《三》初始化数组,rand()产生伪随机值交换打乱

#include <stdio.h>
#include<time.h>

int main()
{
	int i,c,temp;
	int array[9];
	for(i=0;i<9;i++)
	  array[i]=i;

	for(i=0;i<9;i++)
	{
	  c=rand()%(9-i)+i;
	  temp=array[i];
	  array[i]=array[c];
	  array[c]=temp;
	 printf("array[%d]=%d\n",i,array[i]);
	}
 return 0;
}

《四》有时想要存入二维数组随机值,怎么办,额。。。“凉拌”

#include <stdio.h>
#include <time.h>

int main()
{
    srand(time(NULL));
    int i,j=0,k=0,m=0;
    int a[9],Array[3][3]; 
    while (j<9) 
    { 
        a[j] = rand()%9; 
        for(i=0;i<j;i++)
        {
           if(a[i]==a[j]) 
              break; 
        } 
        if(i<j)
            continue;
        j++;
        printf("a[%d]=%d\n",i,a[i]);
     }
     j=0;
     for(i=0;i<9;i++)
     {
          if(i<=2)
          {
              m=0;
              Array[m][i]=a[i];
              printf("Array[%d][%d]=%d\n",m,i,Array[m][i]);
          }
          else if(i<=5)
          {   
              m=1;
              Array[m][j]=a[i];
              printf("Array[%d][%d]=%d\n",m,j,Array[m][j]);
              ++j;
          }
          else
          {      
               m=2;
               Array[m][k]=a[i];
               printf("Array[%d][%d]=%d\n",m,k,Array[m][k]);
               ++k;
           }  
     }
    return 0;
}


还有一些产生随机值的通用表达式,注:以下为网上搜集的资料,由于忘记出处,所以请作者见谅,旨在学习交流。


产生一定范围随机数的通用表示公式
要取得[a,b) 的随机整数,使用(rand()%(b-a))+a;
要取得[a,b] 的随机整数,使用(rand()%(b-a+1))+a;
要取得(a,b] 的随机整数,使用(rand()%(b-a))+a+1;
通用公式:a + rand() % n;取得[a,a+n) 的随机整数,其中的a是起始值,n是整数的范围。

要取得[a,b) 的随机整数,另一种表示:a+(int)b*rand()/(RAND_MAX+1)。
要取得[a,b] 的随机整数 另一种表示:a+(int)b*rand()/(RAND_MAX)。

要取得[0,1] 之间的浮点数 ,可以使用rand()/double(RAND_MAX)。













评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值