কীভাবে একজন arc4random_uniform () এর জন্য পরিসরের মধ্যে এলোমেলো সংখ্যা তৈরি করে?


129

সুতরাং এই কোডবিটে আমার লক্ষ্য এলোমেলোভাবে দুটি ডাইস রোল করা এবং আমরা সবাই জানি যে আপনার নিয়মিত ডাইয়ের কেবল 6 টি দিক রয়েছে তাই আমি আরকি 4 ব্রান্ডম_উনিফর্ম (ইউআইএনটি 32) এ অ্যাক্সেসের জন্য ফাউন্ডেশন আমদানি করেছি। আমি এলোমেলোভাবে 0 পেতে এড়াতে (1..7) এর ব্যাপ্তিটি ব্যবহার করার চেষ্টা করেছি তবে এটি এমন একটি ত্রুটি ঘটেছে যা আমি খুব বেশি উপভোগ করি না। আমি এটি করার চেষ্টা করেছি:

dice1 = arc4random_uniform(UInt32(1..7))

তবে তা ফিরে এসেছিল

সরবরাহ করা আর্গুমেন্ট গ্রহণ করে এমন 'আরআইডি' এর জন্য কোনও ওভারলোড খুঁজে পাওয়া যায়নি

আমি আশা করি এটি আমাকে সাহায্য করার জন্য আপনার জন্য আশ্চর্যজনক ডিবস যথেষ্ট তথ্য আছে :)

দয়া করে মনে রাখবেন আমি দ্রুত খেলার অনুশীলন করতে খেলার মাঠে এটি করছি। এটি কীভাবে করা যায় তা শিখাই জরুরী নয়; সত্যিকারের অ্যাপ্লিকেশনগুলি তৈরির আগে আমি লাফিয়ে উঠি: ডি

//imports random number function
import Foundation
//creates data storage for dice roll
var dice1: UInt32 = 0
var dice2: UInt32 = 0
//counter variable
var i = 0
//how many times snake eyes happens
var snakeeyes = 0
 //how many times a double is rolled
var `double` = 0
//rolls dice 100 times
while i < 100{
    //from here
    //sets dice roll

এটি 'ব্যাপ্তি $ T3' এর ত্রুটিটি UInt32 এ রূপান্তরযোগ্য নয় returns

   dice1 = arc4random_uniform(1..7)
   dice2 = arc4random_uniform(1..7)
    //checks for snake eyes
    if dice1 == 1 && dice2 == 1 {
        snakeeyes = snakeeyes + 1

    }
    //checks for doubles
    if dice1 == dice2{
        `double` = `double` + 1
    }
    //increases counter
        i = i + 1
    //to here
}
println("You got Snake Eyes \(snakeeyes) times.")
println("You got Doubles, \(`double`) times.")

4
আমি বিশ্বাস করি dice1 = arc4random_uniform(6) + 11 - 6 এর ব্যাপ্তি পেতে আপনার করা উচিত I আমি আইওএস উদ্দেশ্য সি করি না বা তত্পরতার বিষয়ে কোনও জ্ঞানও নেই। এলোমেলো পদ্ধতি আপনাকে 0 - 5, এবং + 1 প্রদান করবে 1 - 6
স্কাই

1
ব্যাপ্তি কেবল একটি অবজেক্ট ডেটা, এটি কোনও পূর্ণসংখ্যার ডেটা নয় তাই যুক্তিটি কেবলমাত্র (UInt32) গ্রহণ করলে আপনি ত্রুটি পাচ্ছেন -u_int32_t arc4random_uniform(u_int32_t upper_bound);
স্কাই

আহা! ধন্যবাদ আকাশ! এটি 0 এর চেয়ে কম চলছে কিনা তা পরীক্ষা করার জন্য একটি দৃsert়তার মুখোমুখি হয়েছিল এবং এটি নিশ্চিত করতে পারে যে এটি আমার উত্তর হিসাবে দেওয়া দরকার ছিল যা আমি এটির মতো এটি পরীক্ষা করে দেখতে পারি!
আর্ক্রাই

সম্ভাব্যতা = আন্ত (arc4random_uniform (UInt32 (মোট))) - আপনার যদি একাধিক ingালাইয়ের অভিযোগ থাকে যা স্পর্শকাতর (কারণ
টাইপহেড

উত্তর:


260

আমি বিশ্বাস করি আপনার করা উচিত

dice1 = arc4random_uniform(6) + 1;

1 - 6 এর সীমাটি পেতে I. আমি আইওএস উদ্দেশ্য সি করি না বা তাত্পর্যপূর্ণ ভাষা সম্পর্কে আমার কোনও জ্ঞান নেই। এলোমেলো পদ্ধতিতে 0 এবং 5 এর মধ্যে একটি মান ফেরত দেওয়া উচিত, এবং + 1 এটিকে 1 এবং 6 এর মধ্যে একটি মান করে তুলবে।

যদি আপনার 10 - 30 বলে মনে হয় তার মধ্যে একটি পরিসীমা দরকার তবে ঠিক করুন

int random = arc4random_uniform(21) + 10;

2
@ জোস্মিথ আপনি ঠিক এই বিষয়টিতে রয়েছেন, উপরের গণ্ডিটি অন্তর্ভুক্ত না হওয়ায় এটি 10 ​​- 30 এর মধ্যে একটি পরিসর ফেরত দেওয়ার জন্য arc4random_uniform (21) +10 হওয়া উচিত। "Arc4random_uniform (20) +10" অংশটি সম্প্রদায়ের সম্পাদনা এবং ভোটের ভিত্তিতে তৈরি।
স্কাই

হ্যাঁ, আমি সবেমাত্র পরীক্ষা করেছি এবং একটি এলোমেলো রঙ পেতে (যেমন 0 এবং 255 এর মধ্যে একটি র্যান্ডম মান চাই), আমি ব্যবহার করেছি: "আরক 4 ব্র্যান্ডম_উনিফর্ম (256) + 0"
ক্রিস অ্যালিনসন

91

আমি কোনও ইন্টার টাইপ এক্সটেনশন করেছি। খেলার মাঠে এটি পরীক্ষিত, আশা করি এটি কার্যকর। এটি নেতিবাচক ব্যাপ্তিগুলি গ্রহণ করে:

extension Int
{
    static func random(range: Range<Int> ) -> Int
    {
        var offset = 0

        if range.startIndex < 0   // allow negative ranges
        {
            offset = abs(range.startIndex)
        }

        let mini = UInt32(range.startIndex + offset)
        let maxi = UInt32(range.endIndex   + offset)

        return Int(mini + arc4random_uniform(maxi - mini)) - offset
    }
}

মত ব্যবহার করুন

var aRandomInt = Int.random(-500...100)  // returns a random number within the given range.

বা এটিকে সম্পত্তি হিসাবে রেঞ্জ এক্সটেনশান হিসাবে সংজ্ঞায়িত করুন:

extension Range
{
    var randomInt: Int
    {
        get
        {
            var offset = 0

            if (startIndex as Int) < 0   // allow negative ranges
            {
                offset = abs(startIndex as Int)
            }

            let mini = UInt32(startIndex as Int + offset)
            let maxi = UInt32(endIndex   as Int + offset)

            return Int(mini + arc4random_uniform(maxi - mini)) - offset
        }
    }
}

// usage example: get an Int within the given Range:
let nr = (-1000 ... 1100).randomInt

6
আপনার এক্সটেনশনটি সুন্দর: 3 সুইফটের সত্যিকারের ব্যবহার!
কালজেম

আমি রেঞ্জ এক্সটেনশন পছন্দ করি।
ডেভিড জেমস

ভাল উত্তর. আমার একমাত্র সতর্কবাণীটি এলোমেলোভাবে বলা হবে: ইন্ট বা রেঞ্জের কোনও প্রাকৃতিক বর্ধন নয়। আমি কেবল এটি কোনও ইউটিলিটি ফাইলের একা একা ফাংশন হিসাবে যুক্ত করব would
ভিন্স ও'সুলিভান

সুইফট 3-এ আপডেট হওয়া দরকার, এর পরিবর্তে রেঞ্জ.স্টার্ট ইন্ডেক্সকে প্রতিস্থাপন করুন ফ্লোরবাউন্ডের পরিবর্তে এবং এন্ডআইডেক্স এখন উপরের সীমানা
জোসেফ আস্ট্রাহান

62

বেশ কয়েকটি ভাল উত্তর, তবে আমি ইতিবাচক পূর্ণসংখ্যার জন্য আমার ব্যক্তিগত পছন্দের সুইফট এলোমেলো সংখ্যা জেনারেশন ফাংশনটি ভাগ করতে চেয়েছিলাম:

সুইফট 2

func randomNumber(range: Range<Int> = 1...6) -> Int {
    let min = range.startIndex
    let max = range.endIndex
    return Int(arc4random_uniform(UInt32(max - min))) + min
}

সুইফট 3

এখানে সুইফট 3-এর একটি দ্রুত আপডেট এবং বোনাস হিসাবে, এটি এখন এমন কোনও মান ধরণের জন্য কাজ করে যা সাইনডইন্টিজার প্রোটোকলের সাথে সামঞ্জস্য রাখে - মূল ডেটা অ্যাপ্লিকেশনগুলির জন্য আরও সুবিধাজনক যেগুলি ইনট 16, ইন্ট 32 ইত্যাদি নির্দিষ্ট করতে হবে, আপনি যদি দ্রুত নোট হিসাবে থাকেন তবে সত্যিই, পাশাপাশি স্বাক্ষরবিহীন পূর্ণসংখ্যার কাজ করার দরকার শুধু সমগ্র ফাংশন তারপর প্রতিস্থাপন কপি SignedIntegerসঙ্গে UnsignedIntegerএবং toIntMax()সঙ্গে toUIntMax()

func randomNumber<T : SignedInteger>(inRange range: ClosedRange<T> = 1...6) -> T {
    let length = (range.upperBound - range.lowerBound + 1).toIntMax()
    let value = arc4random().toIntMax() % length + range.lowerBound.toIntMax()
    return T(value)
}

সুইফট 4

সুইফট 4-এ টুআইন্টম্যাক্স () অপসারণ করার জন্য ধন্যবাদ, আমাদের এখন একটি সাধারণ পূর্ণসংখ্যার ধরণের রূপান্তর করার জন্য বিভিন্ন উপায় ব্যবহার করতে হবে। এই উদাহরণে আমি ইন্টার 64 ব্যবহার করছি যা আমার উদ্দেশ্যগুলির জন্য যথেষ্ট বড়, তবে আপনি যদি স্বাক্ষরবিহীন পূর্ণসংখ্যা ব্যবহার করেন বা কোনও ইন্টার 128 বা ইন্টার 256 কাস্টম প্রকার থাকে তবে আপনার সেগুলি ব্যবহার করা উচিত।

public func randomNumber<T : SignedInteger>(inRange range: ClosedRange<T> = 1...6) -> T {
    let length = Int64(range.upperBound - range.lowerBound + 1)
    let value = Int64(arc4random()) % length + Int64(range.lowerBound)
    return T(value)
}

আরও একটি, মোট র্যান্ডম-ফিলের জন্য, এখানে একটি এক্সটেনশান যা কোনও Collectionধরণের অবজেক্ট থেকে এলোমেলো উপাদান দেয় । নোট করুন এটি এর সূচকটি তৈরি করতে উপরের ফাংশনটি ব্যবহার করে যাতে আপনার উভয়ের প্রয়োজন হবে।

extension Collection {
    func randomItem() -> Self.Iterator.Element {
        let count = distance(from: startIndex, to: endIndex)
        let roll = randomNumber(inRange: 0...count-1)
        return self[index(startIndex, offsetBy: roll)]
    }
}

ব্যবহার

randomNumber()

1 এবং 6 এর মধ্যে একটি এলোমেলো সংখ্যা প্রদান করে।

randomNumber(50...100)

50 এবং 100 এর মধ্যে একটি সংখ্যা প্রদান করে। স্বাভাবিকভাবেই আপনি 50 এবং 100 এর মানগুলি যা পছন্দ করেন তার সাথে প্রতিস্থাপন করতে পারেন।

সুইফট 4.2

হায়রে, আমার সেরা স্ট্যাকওভারফ্লো উত্তরটি শেষ পর্যন্ত অপ্রচলিত হয়ে গেছে। আপনি এখন Int.random(in: 1 ... 6)একটি নির্দিষ্ট পরিসরে একটি এলোমেলো সংখ্যা তৈরি করতে সহজভাবে ব্যবহার করতে পারেন । এছাড়াও পূর্ণসংখ্যার এবং ফ্লোটিং পয়েন্ট নম্বরের অন্যান্য ফর্মগুলির জন্য কাজ করে। সংগ্রহের ধরণগুলি এখন সরবরাহ করে shuffle()এবং randomElement()কার্য করে। সুনির্দিষ্ট র্যান্ডমাইজেশন ফাংশনগুলির জন্য আর কোনও প্রয়োজন নেই যদি না আপনি একটি নির্দিষ্ট র্যান্ডমাইজার টাইপ ব্যবহার করতে চান।


1
আমি এটি দেখেছি এবং ভেবেছিলাম এটি অবশ্যই ভুল হতে হবে কারণ (সর্বাধিক - মিনিট) = 5, 0 থেকে 4 পরিসরে একটি র্যান্ডম পূর্ণসংখ্যার উপার্জন (প্লাস 1 টি 1 থেকে 5) making তবে কোডটি একটি এক্সকোড খেলার মাঠে স্থাপনের মাধ্যমে স্পষ্ট হয়েছিল যে এটি কাজ করেছিল। সর্বাধিক হওয়ার কারণটি প্রকৃতপক্ষে 7 এর সমান যেহেতু এন্ড ইন্ডেক্স সূচিত করে "" সংগ্রহটির প্রথম 'শেষের অতীত' অবস্থান। " (যেমন অ্যাপলের ডকুমেন্টেশনে বলা হয়েছে)। সুতরাং, আমার জন্য একটি ভাল উত্তর এবং একটি দরকারী শেখার অনুশীলন।
ভিন্স ও'সুলিভান

এটি নেতিবাচক পূর্ণসংখ্যার সাথেও কাজ করে। randomNumber(-3 ... -1)যতক্ষণ আপনার আগে এবং পরে স্পেস থাকে ততক্ষণ কাজ করে ...। আপনি random(-3 ..< -1শেষ সংখ্যাটি বাদ দিতেও ব্যবহার করতে পারেন ।
কার্টার মেডলিন

আপনি যদি অ-পূর্ণসংখ্যার সাথে এই কাজটি করতে চান তবে ClosedIntervalতার পরিবর্তে ব্যবহার করুন Range
কার্টার মেডলিন

আমি না। ব্যবধানের ধরণগুলি সুইফ্ট 3 এ অবমূল্যায়ন করা হয়েছিল কোডের কার্যকারিতা প্রসারিত করার জন্য জেনারিক্স ব্যবহার করার সম্ভবত একটি উপায় রয়েছে তবে তদন্ত করার সময়, প্রবণতা বা কারণ আমার কাছে নেই।
অ্যাশ

1
আমরা সেখানে যাই, কোডটির একটি জেনারিকাইজড পূর্ণসংখ্যা সংস্করণ।
অ্যাশ


18

যদি আপনি চান আমি এলোমেলো সংখ্যার জন্য এটি তৈরি এটি ইন্ট এবং ডাবল, ফ্লোট সংখ্যাটির বর্ধন

/**
    Arc Random for Double and Float
*/
public func arc4random <T: IntegerLiteralConvertible> (type: T.Type) -> T {
    var r: T = 0
    arc4random_buf(&r, UInt(sizeof(T)))
    return r
}
public extension Int {
    /**
    Create a random num Int
    :param: lower number Int
    :param: upper number Int
    :return: random number Int
    By DaRkDOG
    */
    public static func random (#lower: Int , upper: Int) -> Int {
        return lower + Int(arc4random_uniform(upper - lower + 1))
    }

}
public extension Double {
    /**
    Create a random num Double
    :param: lower number Double
    :param: upper number Double
    :return: random number Double
    By DaRkDOG
    */
    public static func random(#lower: Double, upper: Double) -> Double {
        let r = Double(arc4random(UInt64)) / Double(UInt64.max)
        return (r * (upper - lower)) + lower
    }
}
public extension Float {
    /**
    Create a random num Float
    :param: lower number Float
    :param: upper number Float
    :return: random number Float
    By DaRkDOG
    */
    public static func random(#lower: Float, upper: Float) -> Float {
        let r = Float(arc4random(UInt32)) / Float(UInt32.max)
        return (r * (upper - lower)) + lower
    }
}

ব্যবহার:

let randomNumDouble = Double.random(lower: 0.00, upper: 23.50)
let randomNumInt = Int.random(lower: 56, upper: 992)
let randomNumInt =Float.random(lower: 6.98, upper: 923.09)

বাইনারি অপারেটর / দুটি ডাবল অপারেন্ডে প্রয়োগ করা যাবে না
জেসন জি


8

কারণ arc4random_uniform () নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়েছে:

func arc4random_uniform(_: UInt32) -> UInt32

এটি ইনপুট হিসাবে একটি UInt32 নেয় এবং একটি ইউআইএনটি 32 আউট করে। আপনি এটিকে মানগুলির একটি পরিসর পাস করার চেষ্টা করছেন। arc4random_uniform আপনাকে 0 এবং আপনি যে নম্বরটি পাস করেছেন তার মধ্যে একটি এলোমেলো সংখ্যা দেয় (একচেটিয়াভাবে), উদাহরণস্বরূপ, যদি আপনি -50 এবং 50 এর মধ্যে একটি এলোমেলো সংখ্যা খুঁজে পেতে চেয়েছিলেন, যেমন [-50, 50]আপনি ব্যবহার করতে পারেনarc4random_uniform(101) - 50


স্কাই আমার প্রশ্নের পুরোপুরি উত্তর দিয়েছিল আমি বিশ্বাস করি আপনি একই কথা বলছেন পাশাপাশি আপনাকেও অনেক ধন্যবাদ নিশ্চিত করতে পারবেন যে dice1,2 = arc4random_uniform (6) +1 সেট করে সত্যই 1-6 নির্ধারণ করেছিলাম আমি দৃ an়তার সাথে এটি পরীক্ষা করেছি: ডি
আরসিরেইগ

6

আমি সুইচ ২.০ নিয়ে কাজ করার জন্য @ ডেআরকে -_- ডি0 জি এর উত্তরটি পরিবর্তন করেছি

/**
Arc Random for Double and Float
*/
public func arc4random <T: IntegerLiteralConvertible> (type: T.Type) -> T {
    var r: T = 0
    arc4random_buf(&r, sizeof(T))
    return r
}
public extension Int {
    /**
    Create a random num Int
    :param: lower number Int
    :param: upper number Int
    :return: random number Int
    By DaRkDOG
    */
    public static func random (lower: Int , upper: Int) -> Int {
        return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
    }

}
public extension Double {
    /**
    Create a random num Double
    :param: lower number Double
    :param: upper number Double
    :return: random number Double
    By DaRkDOG
    */
    public static func random(lower: Double, upper: Double) -> Double {
        let r = Double(arc4random(UInt64)) / Double(UInt64.max)
        return (r * (upper - lower)) + lower
    }
}
public extension Float {
    /**
    Create a random num Float
    :param: lower number Float
    :param: upper number Float
    :return: random number Float
    By DaRkDOG
    */
    public static func random(lower: Float, upper: Float) -> Float {
        let r = Float(arc4random(UInt32)) / Float(UInt32.max)
        return (r * (upper - lower)) + lower
    }
}

দ্রুততম সমাধান এখানে! অনেক ধন্যবাদ!
এন্ড্রু


3

দ্রুত ...

এটি অন্তর্ভুক্তিমূলক, কলিং random(1,2)একটি 1 বা 2 ফেরত দেবে, এটি নেতিবাচক সংখ্যাগুলির সাথেও কাজ করবে।

    func random(min: Int, _ max: Int) -> Int {
        guard min < max else {return min}
        return Int(arc4random_uniform(UInt32(1 + max - min))) + min
    }

3

উত্তরটি কেবলমাত্র 1 লাইন কোড:

let randomNumber = arc4random_uniform(8999) + 1000 //for 4 digit random number
let randomNumber = arc4random_uniform(899999999) + 100000000 //for 9 digit random number
let randomNumber = arc4random_uniform(89) + 10    //for 2 digit random number
let randomNumber = arc4random_uniform(899) + 100  //for 3 digit random number

বিকল্প সমাধানটি হ'ল:

    func generateRandomNumber(numDigits: Int) -> Int{
    var place = 1
    var finalNumber = 0;
    var finanum = 0;
    for var i in 0 ..< numDigits {
        place *= 10
        let randomNumber = arc4random_uniform(10)         
        finalNumber += Int(randomNumber) * place
        finanum = finalNumber / 10
           i += 1
    }
    return finanum
}

যদিও অপূর্ণতা এই সংখ্যাটি 0 থেকে শুরু হতে পারে না।


2

সুইচ ৪.২ থেকে:

Int {    
    public static func random(in range: ClosedRange<Int>) -> Int
    public static func random(in range: Range<Int>) -> Int
}

ব্যবহৃত:

Int.random(in: 2...10)

2

সম্পাদনা করুন: সুইফট 4.2+ এখন এটি সরবরাহ করে:

(100...200).randomElement()

এটি প্রসারিত করা আমার কাছে বোকামিযুক্ত Range:

public extension Range where Bound == Int {
    var random: Int {
        return lowerBound + Int(arc4random_uniform(UInt32(upperBound - lowerBound)))
    }
}

public extension ClosedRange where Bound == Int {
    var random: Int {
        return lowerBound + Int(arc4random_uniform(UInt32(upperBound - lowerBound + 1)))
    }
}

ব্যাবহৃত হচ্ছে:

let foo = (100..<600).random

সম্ভবত কেবল একটি স্টাইলিস্টিক জিনিস। উভয় পদ্ধতির অন্তর্নিহিত সুবিধা নেই, এটি আপনার যা স্বাচ্ছন্দ্য বোধ করে ঠিক তেমনই।
অ্যাশ

1
যারা এই "রচনাশৈলীসংক্রান্ত" বিবেচনা জন্য আমি তাদের জন্য একটি ভাষা সুপারিশ আছে: C। আনন্দ কর!
এমএক্সসিএল

আমি নিশ্চিত যে এটি 3 বছর আগে কেউ ইতিমধ্যে সম্পন্ন করেছে :) স্ট্যাকওভারফ্লো.com
লিও Dabus

1

আমি নিম্নলিখিত কোডটি ব্যবহার করে একটি এলোমেলো সংখ্যা তৈরি করতে সফলভাবে সাফল্য পেয়েছি:

var coin = arc4random_uniform(2) + 1

আশা করি এটি আপনাকে সহায়তা করতে পারে।


0

সুইফ্ট 3 এক্সকোড বিটা 5 সলিউশন। টেড ভ্যান গ্যালেন উত্তরের উপর ভিত্তি করে।

extension Int
  {
     static func random(range: Range<Int> ) -> Int
    {
        var offset = 0

        if range.lowerBound < 0   // allow negative ranges
        {
            offset = Swift.abs(range.lowerBound)
        }

        let mini = UInt32(range.lowerBound + offset)
        let maxi = UInt32(range.upperBound   + offset)

        return Int(mini + arc4random_uniform(maxi - mini)) - offset
    }
}

0

var পরিসরFromLimits = arc4random_uniform ((ইউপিপারবাউন্ড - লাউয়ারবাউন্ড) + 1)) + লোয়ারবাউন্ড;



0

Rangeটেড ভ্যান গ্যালেনের উত্তরটি সুইফট 4 / এক্সকোড 9+ ব্যবহার করে এক্সটেনশনের কিছুটা আপডেট হওয়া সংস্করণ সম্ভবত এটির জন্য দরকারী বলে মনে হচ্ছে :

extension CountableClosedRange where Bound == Int {
    var randomFromRange: Bound {
        get {
            var offset = 0
            if lowerBound < 0 {
                offset = abs(lowerBound)
            }
            let mini = UInt32(lowerBound + offset)
            let maxi = UInt32(upperBound + offset)
            return Int(mini + arc4random_uniform(maxi - mini)) - offset
        }
    }
}

let n = (-1000 ... 1000).randomFromRange
print(n)

বা খোলা এবং বন্ধ অন্তরগুলিকে সমর্থন করার জন্য এটি কিছুটা "হ্যাকি" সমাধান:

extension CountableRange where Bound == Int {
    var randomFromRange: Bound {
        return uniformRandom(from: lowerBound, to: upperBound)
    }
}

extension CountableClosedRange where Bound == Int {
    var randomFromRange: Bound {
        return uniformRandom(from: lowerBound, to: upperBound - 1)
    }
}

func uniformRandom(from: Int, to: Int) -> Int {
    var offset = 0
    if from < 0 {
        offset = abs(from)
    }
    let mini = UInt32(from + offset)
    let maxi = UInt32(to + offset)
    return Int(mini + arc4random_uniform(maxi - mini)) - offset
}

একসাথে উভয় ধরণের অন্তরগুলিতে সম্পত্তি যুক্ত করার কোনও উপায় আছে কিনা তা নিশ্চিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.