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
}
1.有一个活动有A,B,C 三样礼物, 现在要编写编写算法,实现 A礼物出现的概率是(99.9),B 礼物出现的概率是(0.09),C 礼物出现的概率是(0.01) var a = 0,b = 0,c = 0; for _ in 1...100000 { if (rankMain(persen: &amp;amp;amp;amp;amp;quot;99.9&amp;amp;amp;amp;amp;quot;) == true){