İki metin kutusu kullanıyorum ve kullanıcı 2 pozitif tamsayı girebilir (Objective-C kullanarak). Amaç, iki sayı arasında rastgele bir değer döndürmektir.Objective-C'de İki Sayı Arasında Rastgele Sayılar Oluşturun
"Man arc4random" 'u kullandım ve hala kafamın etrafına dolamıyorum. Bazı kodlarla geldim ama bu adam.
float lowerBound = lowerBoundNumber.text.floatValue;
float upperBound = upperBoundNumber.text.floatValue;
float rndValue;
//if lower bound is lowerbound < higherbound else switch the two around before randomizing.
if(lowerBound < upperBound)
{
rndValue = (((float)arc4random()/0x100000000)*((upperBound-lowerBound)+lowerBound));
}
else
{
rndValue = (((float)arc4random()/0x100000000)*((lowerBound-upperBound)+upperBound));
}
Şu anda 0 ve 3 değerlerini kullanırsam, gayet iyi görünüyor. Ancak 10 ve 15 numaralarını kullanırsam hala "rndValue" için 1.0000000 veya 2.000000 gibi düşük değerler alabilirim.
Algoritmamı detaylandırmalı mıyım yoksa arc4random kullanma şeklini değiştirmem gerekiyor mu?
int lowerBound = ...
int upperBound = ...
int rndValue = lowerBound + arc4random() % (upperBound - lowerBound);
Yoksa demek eğer LOWERBOUND UPPERBOUND arasındaki şamandıra numarasını kullanabilirsiniz:
http://iphonedevelopment.blogspot.com/2008/10/random-thoughts-rand-vs-arc4random.html – Andrew
Parantezleriniz yanlış. Açık parantezi '' 've ardından parantezin ardından kapatın; Yine de hala yuvarlama sorunlarınız var. –
Genel formül 'minDeğer + ((maksDeğer - minDeğer) * rnd())' Burada 'rnd()', 0,0 ve 1,0 arasında bir rasgele kayan nokta değeri döndürür, aradığınız değeri döndürür. Bunu Obj-C'ye dönüştürmek ve ihtiyaçlarınıza göre optimize etmek için size bırakıyorum. –