• 产生不同比例的随机数


    需求:

      1000个整数,其中85%取值2或者3,其他的随机分布在1到7之间。

    想法:

      1.首先,随机产生1000个0~1000的随机数,假设为数组x,将x赋值给y。

          2.接着将y中不大于x[850]的值,赋值为随机产生的2或3

      3.然后将不小于x[850]的值赋值为1,4,5,6,7。

    关键代码:

    for (int i=1; i<=num; i++)
        {
            if(y[i]<=x[850]&&num1<850)
            {
                y[i]=rand()%MAX2+2;
                num1++;
            }
            else
            {   //2.如何得到值为1,4,5,6,7
                y[i]=rand()%MAX1+1;//得到随机数1~5
                if(y[i]>1)y[i]=y[i]+2;//如果大于1。将2~5换到4~7
            }
        }

    完整代码:

    #include <fstream>
    #include <iostream>
    #include<stdlib.h>
    #include<algorithm>
    #include <time.h>
    using namespace std;
    
    #define MAX 1000
    #define MAX1 5
    #define MAX2 2
    #define num 1000
    
    int main(int argc, char* argv[])
    {
    
        srand((unsigned)time(NULL));         //srand()函数产生一个以当前时间开始的随机种子
    
        ofstream file2;
        file2.open("C:\Users\XDJ\Desktop\1.txt");//以输入方式打开文件
    
        int x[num+1];
        int y[num+1];
    
        for (int i=1; i<=num; i++)
        {
            x[i]=rand()%MAX+1;//MAX为最大值,其随机域为0~MAX-1
            y[i]=x[i];
        }
        sort(x+1,x+num+1);
        int num1=0;
        for (int i=1; i<=num; i++)
        {
            if(y[i]<=x[850]&&num1<850)
            {
                y[i]=rand()%MAX2+2;
                num1++;
            }
            else
            {   //2.如何得到值为1,4,5,6,7
                y[i]=rand()%MAX1+1;//得到随机数1~5
                if(y[i]>1)y[i]=y[i]+2;//如果大于1。将2~5换到4~7
            }
        }
        for (int i=1; i<=num; i++)
            file2<<i<<"	"<<y[i]<<endl;
        file2.close();
        return 0;
    }
  • 相关阅读:
    每天读一下,你就会改变
    C++ 反转字符串(原创)
    C++ string学习
    18种常见室内花卉的功效 (转自网络)
    UML建模教程
    孙鑫视频VC++深入详解学习笔记
    visual C++ 6.0开发工具与调试
    C++ typeid typename使用
    C++模板学习
    Working classes Code complete reading notes(6)
  • 原文地址:https://www.cnblogs.com/XDJjy/p/5267373.html
Copyright © 2020-2023  润新知