Перевод php в swift


#1

моя задача переписать код с php на swift
вот код php
$c2 = 0;
for ($p = 0;$p <= 1.0;$p += 0.1) {
$c1 = 0;
$q = $p*10000;
for ($i = 0;$i<=10000;$i++) {

$c = 0;
do {
$c++;
} while (($w = random_int(0, 10000) < $q) && ($c < 10000));
$c1 = $c1 + $c;
}
echo $c1;
echo ‘|’;
$c2++;
$arr[“A”][$c2] = $c1/10000;
$arr[“P”][$c2] = 1/(1-$p);
$c = 0;
}

$f = fopen(‘qwerty2.csv’, ‘w’);
fputcsv($f, $arr[“A”], “;”);
fputcsv($f, $arr[“P”], “;”);
fclose($f);
print_r($arr);

должен выводить значения

вот код, который получился, проблема в том ,что код на swift выдает иные значения

var c = 0
var c1 = 0
var c2 = 0
var c3 = 0
var p = 0
var q = 0
var i = 0

while p<100 {
p=p+10
q=p*100
i=0
while i<10_000 {
i=i+1
c = 0
repeat {
c=c+1
}while Int.random(in: 0…100)<q && c < 100
c1=c1+c
}

print (c1/10000)
print (100/(100-p))
c=0

}
использую другие значения переменных для удобства

Заранее спасибо за помощь


#2

еще один вариант

let arr = Array(0...10)
let arr2 = Array(0...10000)

for i in arr {
    let p = Double(i) / 10
    let q = Int(p * 10000)
    var c = 0
    var c1 = 0

    for _ in arr2 {
        repeat {
            c += 1
        } while (Int.random(in: 0...10000) < q && c < 10000)
        c1 = c1 + c
    }

    print(c1 / 10000)
    print(1 / (1 - p))
    print("--------------")
    c = 0
}

И учтите, работая с рандомом, вы никогда не получите одинаковые результаты


#3

Спасибо большое!!! Очень помогли.