Есть ли способ улучшить этот метод перемешивания массива Powershell? - PullRequest
1 голос
/ 02 мая 2020

Я разработал карточную колоду, чтобы играть в настольную игру на Visio во время Ковида. У меня и моих друзей есть «ощущение», что карты плохо перемешаны. Примечание для downvoters: я не знаю, как правильно измерить это чувство по-настоящему математическим / программистским способом. Но я был бы более чем счастлив, чтобы правильно измерить его.

Я использую следующий код (я упростил, но я использую тот же алгоритм для оборотных карточек, который содержит числа, при необходимости я могу добавьте его):

    # Actions
    $CONFIG_ACTIONS = @{
        "pool"=9
        "interim"=9
        "bis"=9
        "parc"=18
        "sell"=18
        "barrier"=18
    }
    $unshuffeledListAction = [System.Collections.ArrayList]@()
    foreach ($actionToAdd in $CONFIG_ACTIONS.Keys) {
        [int]$howManyTime = $($CONFIG_ACTIONS[$actionToAdd])
        for($i=0;$i -lt $howManyTime;$i++) {
            $unshuffeledListAction.Add($actionToAdd) | out-null
        }
    }
    # Request random number between 0 and 65535
    $requestURI = "https://qrng.anu.edu.au/API/jsonI.php?length=1&type=uint16"
    # Randomize Cards: Try WebService
    Try {
        $random = $(Invoke-RestMethod -Uri $requestURI -Method GET).data 
        $shuffeledListActions = $unshuffeledListAction | Get-Random -Count $unshuffeledListAction.Count -SetSeed ($random[0])       
    } Catch {
        Write-warning "Failed to called QRNG@ANU JSON API switching to local pseudo-random"
        $shuffeledListActions = $unshuffeledListAction | Get-Random -Count $unshuffeledListAction.Count
    }

У меня нет особых потребностей в безопасности, так как это для личного использования без конфиденциальной информации, поэтому я в порядке, чтобы работать с WebServices, и я уже сделал попытку.

Моя первая попытка тасования была просто: $shuffeledListActions = $unshuffeledListAction | Get-Random -Count $unshuffeledListAction.Count можно ли ее улучшить? Вторая попытка вызова службы генератора квантовых случайных чисел лучше?

1 Ответ

2 голосов
/ 02 мая 2020

Get-Random -Count в порядке. Я, вероятно, полностью откажусь от вызова веб-службы. PRNG - это прекрасно, и взятие семян откуда-то еще мало что меняет.

...