24小时热门版块排行榜    

查看: 1518  |  回复: 13

huanyingst

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 欢乐妞 at 2013-12-09 22:32:53
恰好我也用到随机数,这是我用c++写的,
头文件要包含
#include<cstdlib>
#include<ctime>
在c语言中包含的头文件去掉c就可以了,即
#include<stdlib.h>
#include<time.h>
srand((u ...

你好 请问晶包里有规律的替换原子用c怎么写啊~谢谢~
11楼2014-07-10 11:20:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

探索357

木虫 (正式写手)

C++里面随机数的产生于种子值有关,默认的话,种子是不变的,也就是每次产生的一系列随机数都相同,需要更改种子的值
12楼2014-07-12 19:59:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

weakood

新虫 (初入文坛)

【答案】应助回帖

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

int main(){
  int size = 100;   //可以自己设置要要到的范围
  int arr[size] = {};   
  printf("请选择是否要得到随机数,输入1表示要得到,输入0表示结束\n";
  int i, num;
  scanf("%d", &i);
  while(1 == i){
     num = rand()%100;
     if(!arr[num]){
         printf("你得到的随机数是:%d\n", num + 1);
         scanf("%d", &i);
     }else
          i = 1;
  }
  return 0;
}
13楼2014-07-27 16:57:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

枪下游魂

木虫 (著名写手)

【答案】应助回帖

#define M1 259200
#define IA1 7141
#define IC1 54773
#define RM1 (1.0/M1)
#define M2 134456
#define IA2 8121
#define IC2 28411
#define RM2 (1.0/M2)
#define M3 243000
#define IA3 4561
#define IC3 51349

double ran1(idum)
int *idum;
{
        static long ix1,ix2,ix3;
        static double r[98];
        double temp;
        static int iff=0;
        int j;
        void nrerror();

        if (*idum < 0 || iff == 0) {
                iff=1;
                ix1=(IC1-(*idum)) % M1;
                ix1=(IA1*ix1+IC1) % M1;
                ix2=ix1 % M2;
                ix1=(IA1*ix1+IC1) % M1;
                ix3=ix1 % M3;
                for (j=1;j<=97;j++) {
                        ix1=(IA1*ix1+IC1) % M1;
                        ix2=(IA2*ix2+IC2) % M2;
                        r[j]=(ix1+ix2*RM2)*RM1;
                }
                *idum=1;
        }
        ix1=(IA1*ix1+IC1) % M1;
        ix2=(IA2*ix2+IC2) % M2;
        ix3=(IA3*ix3+IC3) % M3;
        j=1 + ((97*ix3)/M3);
        if (j > 97 || j < 1) nrerror("RAN1: This cannot happen.";
        temp=r[j];
        r[j]=(ix1+ix2*RM2)*RM1;
        return temp;
}

#undef M1
#undef IA1
#undef IC1
#undef RM1
#undef M2
#undef IA2
#undef IC2
#undef RM2
#undef M3
#undef IA3
#undef IC3

以上 程序段名为“ran1.c”,产生0到1之间的随机数,出自 《numerical receipt in c》一书
相对于以时间来生成随机数,这个的连续性和随机性我觉得更好。
缺点为如果你给定一个初始种子,那每次产生的随机数相同。
14楼2014-07-28 09:11:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 elevenleo 的主题更新
信息提示
请填处理意见