Я разработал карточную колоду, чтобы играть в настольную игру на 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
можно ли ее улучшить? Вторая попытка вызова службы генератора квантовых случайных чисел лучше?