zoukankan      html  css  js  c++  java
  • 随机数组的生成方法

    温故而知新,曾经走过的路、做过的事情,总需要等到一个时候,也许是夜深人静,才会想起是该留下点东西。

    忙碌了一个又一个7天,身心疲惫,却没有《最美丽的7天》那么悲情;既然都熬过来了,总会收获点甚么吧。

    本文将为您讲述(也算是记录),如何生成一个随机的不重复的数组(也可以说是列表),当然所要填充的数都是整数。

    下面来看下怎么实现吧:

     1 #include<iostream>   
     2 #include<algorithm>   
     3 using   namespace   std;
     4 
     5 int   main()   
     6 {   
     7     int   a[1000];
     8 
     9     for(int i=0;i<1000;i++)
    10     {
    11         a[i] = i;
    12     }
    13 
    14     int*   a_begin   =   a;   
    15     int*   a_end   =   a   +   sizeof(a)/sizeof(int);   
    16     random_shuffle(a_begin,a_end);   
    17 
    18     for(int j=0;   j<1000;   j++)   
    19     {   
    20         cout<<a[j]<<"	";   
    21     }  
    22 
    23     getchar();
    24     return 0;
    25 }
    Test_Random.cpp

    1.首先创建数组对象a[],当然根据个人需要还可以用double或其他类型的数组。

    2.给数组赋初值,代码中是for循环直接给a[]中各个元素分别赋予了1~1000的整数值。

    3.使用random_shuffle高斯随机将数组中的元素打乱顺序,这样就生成了随机数组;如果你想更乱,可以多次调用random_shuffle进行操作。

    4.Show出随机数组,查看效果。

    问题:如果我想要生成可变长度的随机数列又该怎么办呢?如下方法是否可行呢?

    int   main()   
    {   
    	int* a = null;
    
            a = new int[1000];
    	for(int i=0;i<1000;i++)
    	{
    		a[i] = i;
    	}
    	int*   a_begin   =   a;   
    	int*   a_end   =   a   +   sizeof(a)/sizeof(int);   
    	random_shuffle(a_begin,a_end);   
    
    	for(int j=0;   j<1000;   j++)   
    	{   
    		cout<<a[j]<<"	";   
    	}  
    
    	getchar();
    	return 0;
    }
    

    注:如上代码有兴趣的盆友们请尽情尝试吧,不用怕小伙伴们都惊呆了!

    Solution:要生成可变长度的随机数列,正确可行的方案又是什么呢?

     1 #include<iostream>
     2 #include <vector>
     3 #include<algorithm>
     4 using namespace std;
     5 
     6 int main()
     7 {   
     8     vector<int> a;
     9 
    10     for(int i=0; i<1000; i++)
    11     {
    12         a.push_back(i);
    13     }
    14     random_shuffle(a.begin(),a.end());
    15     
    16     for(int j=0; j<a.size(); j++)   
    17     {   
    18         cout<<a[j]<<"	";
    19     }
    20     
    21     getchar();
    22     if(!a.empty())
    23     {
    24         a.swap(vector<int>());
    25     }
    26     return 0;
    27 }
    TestRandom2.cpp

    1.首先创建vector<>对象a,当然根据个人需要还可以用double或其他类型。

    2.for循环插入1000个元素,数值范围是1~1000。

    3.使用random_shuffle高斯随机将数组中的元素打乱顺序,这样就生成了随机数组;如果你想更乱,可以多次调用random_shuffle进行操作。

    4.Show出随机数组,查看效果。

    5.结束时注意清空vector<>。

      

  • 相关阅读:
    WebService出错 Maximum message size quota for incoming messages (65536) has been exceeded.已超过传入消息(65536)的最大消息大小配额
    php 获取系统时间
    JavaSctipt 控制网页 前进,后退
    放A片的文件夹的名字
    玩玩独轮车
    3月18日周六骑行三水大旗头村——广东名镇之一
    叫春的猫
    抓紧锻炼身体噢!
    使用Zend Framework中的 Zend_Pdf来创建pdf文档
    虚拟主机示例
  • 原文地址:https://www.cnblogs.com/yisonli/p/3306651.html
Copyright © 2011-2022 走看看