我有一个 mnesia 表t
,其中包含具有单个字段的记录x
。如何从中选择随机x
值t
?
为了避免整个数学学究的过程:我不关心随机数生成的细节,我只是希望我的结果每次都不一样。
谢谢,
-tjw
不是很有效,但会起作用:
更复杂:
多一个:
这些解决方案中的每一个都有重要的缺陷:并发写入性能、读取开销等。
通过使用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
.