delphi7 洗牌算法
时间: 2023-09-07 13:14:00 浏览: 49
在Delphi7中实现洗牌算法,可以使用插牌思路或者换牌思路。插牌思路是指每次生成一张最大的牌,与随机的某张牌换位子,这种洗牌是均匀的。以下是一个使用插牌思路的Delphi7代码示例:
```delphi
function ShuffleInsert(m: Integer): TArray<Integer>;
var
arr: TArray<Integer>;
i, rnd, temp: Integer;
begin
SetLength(arr, m);
arr\[0\] := 0;
for i := 1 to m - 1 do
begin
rnd := Random(i + 1);
arr\[i\] := arr\[rnd\];
arr\[rnd\] := i;
end;
Result := arr;
end;
```
换牌思路是指每次将第i张牌与任意一张牌换位子,换完一轮即可。以下是一个使用换牌思路的Delphi7代码示例:
```delphi
function ShuffleSwap(m: Integer): TArray<Integer>;
var
arr: TArray<Integer>;
i, rnd, temp: Integer;
begin
SetLength(arr, m);
for i := 0 to m - 1 do
begin
arr\[i\] := i;
end;
for i := 0 to m - 1 do
begin
rnd := Random(i + 1);
temp := arr\[rnd\];
arr\[rnd\] := arr\[i\];
arr\[i\] := temp;
end;
Result := arr;
end;
```
以上代码示例可以在Delphi7中使用,分别实现了插牌思路和换牌思路的洗牌算法。
#### 引用[.reference_title]
- *1* *2* *3* [随机问题之洗牌算法](https://blog.csdn.net/weixin_33743248/article/details/89443454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]