Apple Interview Question

Given a function magicNumber() that returns a random integer 1 or 0, write a new function that will generate a random number that uses this magicNumber() function.

Interview Answers

Anonymous

Feb 18, 2019

what is the number we want to generate? Is it a single digit? is the in the int range? what about negative numbers? should all numbers have the same probability?

Anonymous

May 13, 2019

class RandomGenerator { func magicNumber() -> Int { return Int.random(in: 0...1) } func randomNumber() -> Int { var number = 0 for bit in 0..*Int.bitWidth { if magicNumber() == 1 { let mask = 1 ** bit number += mask } } return number } } let randomGenerator = RandomGenerator() print(randomGenerator.randomNumber())

1

Anonymous

Feb 18, 2019

if we get 'n' which is the max no we want to generate then run the MagiNumber() n times and sum the outcome, divide it by n and return the value. All numbers in between 1 to n have the same probability of happening. func(int n) { int i =0, sum = 0; while(i < n) { sum += MagicNumber(); i++; } return sum / n; }