map中獲得隨機資料

2021-08-27 18:54:15 字數 1109 閱讀 3537

獲得隨機資料的對應場景是:我是乙個增刪改查的碼畜,接到了乙個任務。我面對的資料是故事服務,故事有type型別,每個type比如joke笑話下面還有一堆的笑話元資料。

如果我對資料查詢的時候就是乙個type對應乙個集合。所有type的集合加起來,資料量不大只有10萬條左右。第一次我想獲得一條故事資料,第二次再次獲取資料要保證資料type和故事的元資料不同,達到type和故事元資料隨機

type 指向 list的map的集合

//全域性存放故事的id集合

static map> storytypemap = new hashmap<>();

第一步要在map的key隨機獲得, randomsubtype是根據map的key集合的大小生成的隨機數

storytypemap.get(randomsubtype);
下面是整個方法的**

因為key指向的list,再次根據list集合大小生成隨機數,也就是隨機下標。

該方法的步驟:

獲得隨機key;

根據隨機key獲得對應的list;

根據list.size()隨機乙個下標index出來。這樣就達到了,map中的key和list全部隨機。

querysubtypeflag=false;

//根據type獲取對應sbutype集合

listsubtypelist = countstory(queryparam.gettype());

listidlist = new arraylist<>();

//防止進入死迴圈,只允許有限次數的操作

int index=0;

do index++;

} while((idlist == null || idlist.size() == 0) && index < 50);

隨機數獲得

要獲得乙個隨機整數,需要乙個函式,以及給他乙個初值。函式為srand 需要標頭檔案 一般情況下我們使用當前系統的時間的 秒數作為初值的,因為這樣的值一般情況下是不會相同。需要標頭檔案 include for time include for srand and rand include for ti...

mysql中取隨機資料

rand在手冊裡是這麼說的 rand rand n 例 如下 複製 select from table name order by rand limit 5 返回在範圍0到1.0內的隨機浮點值。如果乙個整數引數n被指定,它被用作種子值。如下 複製 mysql select rand 0.5925 m...

生成隨機資料

生成隨機資料 一 生成int型資料 簡單地生成n個隨機資料 數字大小在int範圍內 include include include int main 每次執行該程式得到的隨機數都是一樣的,因為種子相同 改變種子,每次執行程式可以得到不同的隨機數 得到種子需要乙個函式srand m 引數m決定了種子,...