From 5ccc7afcb9e948c8af8951a8b1ff6a4403f27451 Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Fri, 6 Dec 2013 20:14:35 +0000 Subject: [PATCH] Improve shuffling algorithm --- spades.awk | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spades.awk b/spades.awk index 8e7e7ee..b6eff64 100644 --- a/spades.awk +++ b/spades.awk @@ -163,7 +163,7 @@ function sp_next(who, prev) function sp_shuf(i, mixed) { - asorti(sp_players, mixed, "sp_usort") + sp_usort(sp_players, mixed) for (i in mixed) { sp_order[i-1] = mixed[i] sp_players[mixed[i]] = i-1 @@ -173,7 +173,7 @@ function sp_shuf(i, mixed) function sp_deal( shuf) { say("/me deals the cards") - asorti(sp_deck, shuf, "sp_usort") + sp_usort(sp_deck, shuf) for (i=1; i<=52; i++) sp_hands[sp_order[i%4]][shuf[i]] = 1 sp_state = "bid" @@ -206,8 +206,10 @@ function sp_type(card) return substr(card, length(card)) } -function sp_usort(a,b,c,d) { - return rand() - 0.5 +function sp_usort(list, out) { + for (i in list) + out[i] = rand() + asorti(out, out, "@val_num_asc") } function sp_csort(i1,v1,i2,v2) { -- 2.43.2