随机打乱列表,[a,b,c,d,e,f,g],erlang语言编写
时间: 2023-09-26 16:15:12 浏览: 92
可以使用Fisher–Yates洗牌算法来实现随机打乱列表。具体步骤如下:
1. 从列表末尾开始,选择一个随机位置。
2. 将该位置的元素与列表末尾元素交换。
3. 重复步骤1和2,直到列表中所有元素都被遍历。
Erlang代码如下:
```
-module(shuffle).
-export([shuffle/1]).
shuffle(List) ->
shuffle(List, length(List)).
shuffle(_, 0) ->
[];
shuffle(List, Length) ->
RandomIndex = random:uniform(Length) + 1,
[List !! RandomIndex | shuffle(lists:delete(List !! RandomIndex, List), Length - 1)].
```
这里使用了Erlang自带的random模块来生成随机数。使用示例:
```
1> shuffle:shuffle([a,b,c,d,e,f,g]).
[g,a,d,c,f,e,b]
```