最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++編寫生成不重復的隨機數代碼

 更新時間:2015年05月19日 15:43:49   投稿:hebedich  
本文給大家匯總介紹了3種c++實現生成不重復的隨機數的函數,十分的簡單實用,有需要的小伙伴可以參考下。

C++編寫生成不重復的隨機數代碼

vector<int> getRandom(int total)
{
  srand((int)time(NULL));
  std::vector<int> input = *new std::vector<int>();
  for (int i = 0; i < total; i++) {
    input.push_back(i);
  }
  vector<int> output = *new vector<int>();
   
  int end = total;
  for (int i = 0; i < total; i++) {
    vector<int>::iterator iter = input.begin();
    int num = random()%end;
    iter = iter+num;
    output.push_back(*iter);
    input.erase(iter);
    end--;
  }
   
  return output;
}

再來一例:

void permutation(int n, int *z_array)
{
  int i, j, k, z;
  int buffer[N];

  /* 初始化數組 */
  for (i=0; i<n; i++)
    buffer[i]=0;

  /* 準備生成隨機數,以當前時間為種子 */
  srand((unsigned)time((long *)0));

  /* 獲得不重復的隨機數據 */
  for (i=0; i<n; i++) {
    /* 獲得0~(n-i)的隨機數據 */
    z = rand()%(n-i);
    j=0; k=0;
    while (j<=z) {
      if (buffer[j+k]==0) j++;
      else k++;
    }
    buffer[j+k-1]=1;
    z_array[i]=j+k-1;
  }
  return;
}

方法三:來個復雜點的

#include<stdio.h>
#include <time.h>
#include "iostream"
#include <math.h>
#define N 53
using namespace std;

//print array
void display(int *a)
{
    for (int i =0;i<N;i++)
    {
      cout<<" "<<a[i]<<" ";
    }

}

int main(void)
{

  int b[N],a[N];
  for (int i =0;i<N;i++)
  {
    b[i] = i+1;
  }
  // random(a);
  srand((unsigned)time(NULL));
  int MaxIndex = N;
  for ( i= 0;i<N;i++)
  {

  // 
    int index = (int)rand()%MaxIndex;//隨機一個 0 - 52的index
    a[i] = b[index];    //隨機到的數字給a[i],i from 0 to N-1
    b[index] = b[MaxIndex-1];
    MaxIndex--;

  }
    display(a);
  return 0;
} 

以上3種方法均可實現生成不重復的隨機數,具體的效率如何,小伙伴們自己測試下吧。

相關文章

  • C語言對CSV文件從最后往前一行一行讀取的實現方法

    C語言對CSV文件從最后往前一行一行讀取的實現方法

    今天小編就為大家分享一篇關于C語言對CSV文件從最后往前一行一行讀取的實現方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • jQuery移動頁面開發(fā)中主題按鈕的設計示例

    jQuery移動頁面開發(fā)中主題按鈕的設計示例

    這篇文章主要介紹了jQuery移動頁面開發(fā)中主題按鈕的設計示例,jQuery是當今最具人氣的JavaScript開發(fā)類庫,需要的朋友可以參考下
    2015-12-12
  • OpenCV實現實時顏色檢測的示例

    OpenCV實現實時顏色檢測的示例

    本文主要介紹了OpenCV實現實時顏色檢測的示例,通過HSV色彩空間轉換和色調范圍判斷實現紅黃綠藍顏色檢測,包含視頻捕捉、區(qū)域標記、顏色分析等功能,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06
  • 新手向超詳細的C語言實現動態(tài)順序表

    新手向超詳細的C語言實現動態(tài)順序表

    本文主要介紹了C語言實現動態(tài)順序表,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 用VScode編寫C++大型項目的方法步驟

    用VScode編寫C++大型項目的方法步驟

    本文主要介紹了用VScode編寫C++大型項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C++文件IO流及stringstream流讀寫文件和字符串操作詳解

    C++文件IO流及stringstream流讀寫文件和字符串操作詳解

    本文詳細介紹C++中的文件IO流和stringstream流的使用方法,包括文件的打開、讀寫操作,以及字符串的輸入輸出、轉換等操作。同時提供實用的示例代碼和技巧,幫助讀者更好地掌握這兩種流的使用
    2023-04-04
  • 解析C語言中結構體struct的對齊問題

    解析C語言中結構體struct的對齊問題

    這篇文章主要介紹了C語言中結構體struct的對齊問題,作者深入到內存分配方面來進行解析,需要的朋友可以參考下
    2016-04-04
  • Qt寫入Json文件的方法詳解(含源碼+注釋)

    Qt寫入Json文件的方法詳解(含源碼+注釋)

    在Qt庫中,為JSON的相關操作提供了完整的類支持,下面這篇文章主要給大家介紹了關于Qt寫入Json文件(含源碼+注釋)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • C++讀取單個字符操作示例詳解

    C++讀取單個字符操作示例詳解

    這篇文章主要為大家介紹了C++讀取單個字符操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • C語言實現醫(yī)院管理系統

    C語言實現醫(yī)院管理系統

    這篇文章主要為大家詳細介紹了C語言實現醫(yī)院管理系統,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論

滨海县| 南阳市| 固原市| 手机| 原平市| 唐海县| 渭源县| 宁城县| 高台县| 翼城县| 当阳市| 专栏| 兴义市| 固镇县| 牙克石市| 普定县| 时尚| 乌兰察布市| 普兰店市| 大田县| 松潘县| 喜德县| 洪雅县| 柏乡县| 武山县| 霍林郭勒市| 甘洛县| 封丘县| 成都市| 将乐县| 阿克苏市| 成安县| 富源县| 江源县| 蓬安县| 辽中县| 丹江口市| 讷河市| 隆子县| 金沙县| 彰武县|