var a =0,b =0,c =0;for_in1...100000{if(randomMain(persen:"99.9")==true){
a = a +1;// print("A");}if(randomMain(persen:"0.09")==true){
b = b +1;//print("B");}if(randomMain(persen:"0.01")==true){
c = c +1;// print("C");}}print("A = \(a) - B = \(b) - C = \(c)")
输出:
A = 1000 - B = 11 - C = 1
实现:
funcrandomMain(persen:String)->Bool{let number:Float?=Float(persen)if(number ==nil|| number ==0){returnfalse}let persenNumber:NSString= persen asNSStringlet persenGrades:[String]= persenNumber.components(separatedBy:".")var points:Int=0;var lastNumber =0;var i =0;for persen:Stringin persenGrades {
points = points + persen.lengthOfBytes(using:String.Encoding.utf8)if(i ==1){
lastNumber = persen.lengthOfBytes(using:String.Encoding.utf8)}
i = i +1;}var state =falselet remainder =UInt32(powf(10,Float(points)))let lastRemainder =UInt32(powf(10,Float(lastNumber)))let randomNumber:Int=Int(arc4random()% remainder)+1if(randomNumber <=Int(number!*Float(lastRemainder))){
state =true}else{
state =false}return state
}