我有一个mnesia表t
,其中包含一个包含单个字段x
的记录。如何从x
中选择随机值t
?
为了避免数学迂腐的整个过程:我不关心随机数生成的细节,我只想让我的结果每次都不一样。
谢谢,
-tjw
答案 0 :(得分:5)
不是很有效但会奏效:
更复杂:
每个解决方案都有重要的错误:并发写入性能,读取开销等。
答案 1 :(得分:4)
使用mnesia:all_keys/1
(或脏等效)函数和random
模块。
random_value(Table) ->
Keys = mnesia:dirty_all_keys(Table),
Key = lists:nth(random:uniform(length(Keys)), Keys),
[#record{x = X}] = mnesia:dirty_read({Table, Key}),
X.
不要忘记使用random:seed/3
初始化种子。