陣列隨機shuffle方法

2021-10-25 12:22:07 字數 1873 閱讀 9677

在python中我們會經常看到shuffle的隨機排列函式,其可以將列表中的內容進行隨機排列,但在c++中卻需要自己去實現這樣功能的函式(c++0x之前)。在c++0x之後這樣的功能函式在標準庫中已有對應的提供——std::shuffle。下面就對該函式做具體的介紹:

template void shuffle (randomaccessiterator first, randomaccessiterator last, urng&& g);
函式功能:使用隨機生成器g對元素[first, last)可行交換的容器內部元素進行隨機排列,大概原理類似如下**的功能

template void shuffle (randomaccessiterator first, randomaccessiterator last, urng&& g)

}

函式必須與標準庫預設的隨機生成器一起使用,隨機生成器的標頭檔案是。如果要使用不需要傳入隨機生成器函式可以參照random_shuffle函式。
引數:

first, last

順序容器迭代器的開頭(begin)和結尾(end),在[first, end)這個區間內的數值將會被隨機排序。順序容器的迭代器必須是定義有swap函式的資料型別以及順序容器也必須支援元素可交換。

g唯一隨機數生成器的乙個例項,在標頭檔案中定義。 urng 是 uniform random number generator 的縮寫。

返回值:

none
用例:

#include #include #include // std::move_backward

#include // std::default_random_engine

#include // std::chrono::system_clock

int main (int argc, char* ar**)

// obtain a time-based seed:

unsigned seed = std::chrono::system_clock::now ().time_since_epoch ().count ();

std::shuffle (v.begin (), v.end (), std::default_random_engine (seed));

for (auto& it : v)

std::cout << "\n";

return 0;

}

import random

alist = [1,2,3,4,5]

random.shuffle(alist)

print(alist)

#include #include #include #define random(a,b) (rand()%(b-a)+a)

void shuffle(vector& array)

}

import random

list = [0, 1, 2, 3, 4, 5]

print(list)

def shuffle(input):

num = len(input)

for i in range(num):

tmp = random.randint(i, num-1)

input[i], input[tmp] = input[tmp], input[i]

return input

list = shuffle(list)

print(list)

C 下陣列隨機shuffle的方法

最近在linux下用c 做實驗,需要在1到n之間多次均勻隨機選擇m個元素 m 1 定義大小為n的陣列,且陣列元素即為序號0,1,2,n a。2 對陣列進行shuffle操作,打亂陣列元素的順序。3 取陣列的前m個樣本。其中陣列的shuffle操作如下 shuffle algorithm exampl...

shuffle 重排陣列

在一些應用中,我們可能希望按不同的方式對陣列進行排序。函式shuffle 將陣列進行隨機排序。函式array reverse 則可以將原陣列反向排序。bob想讓其 首頁上的產品能夠反應出公司的特色,他擁有很多產品,但希望能夠每次從中隨機抽取出三種產品顯示在首頁上。為了不至於讓多次登入 的訪問者感到厭...

php 隨機獲取陣列 的方法

今天網上搜到的方法,很好的解決了我的問題,記錄一下 方法1 arr array 初始化陣列 key array rand arr 隨機獲取陣列的鍵 echo arr key 輸出隨機數組值。改進型 arr array echo arr array rand arr 方法2 arr array 初始化...