mysql rand函式種子的使用技巧

2021-07-11 08:32:23 字數 656 閱讀 2191

今天解決了乙個困擾了我好久的問題,中午剛睡醒,有時間,於是寫篇文章記錄下。

問題描述:

題目共有100道,每道題都需要考生作答,不同考生作答的題目順序應該是不同的。

問題分析:

不同考生的100道題的順序應該是打亂的,不同考生的題目的順序是不一樣的。

對於同乙個考生 ,題目的順序應該是確定的。

模擬我們現實中的紙質考試方式,不同同學拿到的試卷是不同的,但是一旦該同學拿到試卷,就對應了乙個題目的順序。

解決方法:

(一)一次性取出所有題目,並進行打亂

取出題目使用普通的select操作就可以了,打亂取出的陣列可以使用shuffle函式,打亂之後的陣列需要進行儲存,以便考生在答題過程中不斷讀取。那麼存到**呢? 存到memcached或者redis快取裡面是比較好的處理方式。缺點是還需要搭建相應的快取伺服器環境

(二)還有一張方式是通過mysql的rand函式實現的,我們知道使用select * from table order by rand()可以使我們直接獲取到打亂順序的記錄。rand()函式可以接受種子作為引數,同樣的種子得到的隨機序列是一樣的。也就是說我們使用考生的考號作為種子的話,考生每次從資料庫裡面取到的資料被打亂的順序就是確定的,再結合limit引數就能取到想要的記錄。

全文完,感謝戴大師

隨機函式rand 和隨機數種子的作用

c c 怎樣產生隨機數 這裡要用到的是rand 函式,srand 函式,c語言 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max 間。rand max定義在std...

python中的隨機數種子seed

栗子1 import numpy as np import random random.seed 0 np.random.seed 0 print np.random.rand 2 print np.random.rand 2 結果為 0.5488135 0.71518937 0.60276338 ...

利用隨機數種子來使pytorch中的結果可以復現

在神經網路中,引數預設是進行隨機初始化的。不同的初始化引數往往會導致不同的結果,當得到比較好的結果時我們通常希望這個結果是可以復現的,在pytorch中,通過設定隨機數種子也可以達到這麼目的。seed 0 torch.manual seed seed torch.cuda.manual seed s...