for ($i = 0 ; $i -lt 4 ; $i++){
     
    $array[$i] = @(get-random -input 1, 2, 3, 4, 5, 6 ,7 ,8, 9 ,0)
    
    
    for ($j = 0 ; $j -lt $i ; ){
               
        if ($array[$j] -eq $array[$i]){
             $array[$i] = @(get-random -input 1, 2, 3, 4, 5, 6 ,7 ,8, 9 ,0)
            $j =0
            
            
            
            } else {
                $j++
          
           
         }         
    }
    
}
$array
目標:產生四數位不同數值的亂數。
問題:會產生出重覆數值。EX,$array 丟出來的值為[5008],其中的00為重覆值。
求各先進幫忙解惑一下,為何還是會出現重覆數值?是否能提點一下小弟該往哪個方向思考呢?
這符號真看不習慣,
不過你不需要$j++嗎?
另外,
你的第二個for迴圈外面可能要再加個while來判斷,
只不過這種不重複的問題通常會建議用撲克牌的方式來處理.
洗牌演算法
每種語言的語法會有些不同,
不過邏輯都是一樣的.
$shuffle = (0..9)
function arrayShuffle([int[]]$s){
    $count = $s.count
    $r = @()
    for ($i -eq 0; $i -lt $count; $i++){
        $_r = Get-Random -input $s
        $s = $s| Where-Object { $_ –ne $_r }
        $r = $r + [array]$_r
    }
    return $r
}
write-host((arrayShuffle $shuffle)[0..3])
甚至只想洗指定次數都可以...
$shuffle = (0..9)
function arrayShuffle([int]$t,[int[]]$s){
    if ($t -lt $s.count){
        $count = $t
    }else{
        $count = $s.count
    }
    
    
    $r = @()
    for ($i -eq 0; $i -lt $count; $i++){
        $_r = Get-Random -input $s
        $s = $s| Where-Object { $_ –ne $_r }
        $r = $r + [array]$_r
    }
    return $r
}
write-host((arrayShuffle 4 $shuffle))
write-host((arrayShuffle 9 $shuffle))
write-host((arrayShuffle 11 $shuffle))
你的寫法就重複在0到9中取隨機數4次,當然會重複,程式要想好再寫,你寫的根本就沒道理。