gpfd.net
当前位置:首页 >> 产生不重复的随机数 >>

产生不重复的随机数

将已经产生的随机数保存下来,然后在获取到新的随机数时,与之前保存下来的值进行对比,如果已经出现过则抛弃,并再次获取,直到获取到不同的随机值为止.以获取10个0~100之间的不重复随机数为例,代码如下:#include <stdio.h>#

#include<iostream.h>#include<cstdlib>#include<ctime> void main() { int i,j,a[10]; srand(time(0)); for(i=0;i<10;i++) { a[i]=rand()%10; int flag=1; while(flag==1)// 你的这里可能还会产生重复的数,这里确保产生的数不再重复,只要有重复的就在随机新

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<time.h>int main(){ /*1到100随机不重复数*/ int randnum[100]; srand((unsigned int)time(NULL)); randnum[0] = rand() %

#include<iostream>#include<time.h> #include<stdlib.h>using namespace std;int main(){ int i,j; int n[10]; //要产生10个随机数 int n1=100; //100个随机数 int n2=51; //从50开始 // n[0]=rand()%n1+n2;//产生50-150的随机数 srand((unsigned)time

RAND_MAX是32767, 于是rand()/RAND_MAX得到是1/32767~32767/32767, 乘上n依然只有32767个数 可以通过(rand() << 16) | rand(), 即高16位和低16位分别产生随机数的方法得到更大的随机数 另外先保存再取是个空间时间都特低效的办法, 更好的算法可以自己搜一下"C++产生不重复随机数"

用rand()函数,你先网上看看rand()是怎么用的,注意它是伪随机,初始化种子要设好,网上查下资料多想下就知道了.接着是,你要不同的10个数.你可以设个数组存储已经产生的数.比如已经产生了第一个数5,你用rand()生成了又一个5时,比较一下以产生的数发现是5,就跳过,看下一个.总能产生10个不同的随机数. 缺点是rand()不够好,而且算法不够优化,但是能满足你的要求,就10个数,不影响效率.如果你要上万个不一样的就要好好优化算法了.

可以考虑先把这100个数放在一个数组内,每次随机取一个位置(第一次是1-100,第二次是1-99,),将该位置的数与最后一个位置的数对调就可以了.using System; using System.Collections.Generic; using System.Text; namespace

首先需要使用:Randomize[number] 语句,初始化随机数生成器.如果忽略了数值参数number,Randomize自动使用Timer函数的返回值作为新的随机数种子值.然后需要使用Rnd[(number)]函数,生成小于 1 但大于或等于 0 的随机值.为了生成

public class SuiJiShu {/** * @param args * */ public static void main(String[] args) { int n=3;//产生随机数的个数 int[] it=new int[n]; int i=0;//数组的下标变量 out:while(true){ it[i]=(int)(Math.round(Math.random()*10));//产生随机数 if(i>0){//从产生

网站首页 | 网站地图
All rights reserved Powered by www.gpfd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com