2016-05-06 3 views
0

Я создаю приложение для Android и iOS. В приложении мне нужно генерировать psuedorandom номера, которые соответствуют как версии iOS, так и версии Android. Я видел много реализаций пользовательских генераторов случайных чисел, но некоторые из них находятся на C++ или PHP ... Я знаю только Java и Swift. Может ли кто-нибудь помочь мне и указать мне на случайный генератор, который будет работать как на iOS, так и на Android, или кто-нибудь скажет им, как создать мой собственный генератор случайных чисел?Генератор случайных чисел для iOS и Android

Редактировать: В соответствии с «совпадением» я имел в виду, что мне нужно иметь возможность посеять его, чтобы он производил один и тот же вывод каждый раз.

+0

Каковы трудности для реализации этого на каждой платформе? На андроиде это 'new Random(). NextInt()' –

+0

Вот ссылка, которая может вам помочь. [Здесь] (http://stackoverflow.com/questions/24007129/how-does-one-generate-a-random-number-in-apples-swift-language) –

+1

Что вы подразумеваете под «match»? – cyroxis

ответ

0
randomValue = arc4random() % 255; 

Сформировать Randome значение от 0 до 255 КСН

0

Я интерпретация «матча» означать, что вы хотели бы реализации IOS и Android, чтобы получить ту же последовательность значений, если высевают одинаково. Вы можете сделать это, используя стандартную реализацию Mersenne Twister, mt19937. У Apple есть реализация, доступная в Swift через GameplayKit. Вы можете подтвердить свое поведение и воспроизводимость в Playground:

import GameplayKit 

let source = GKMersenneTwisterRandomSource(seed: 123) 
source.nextUniform()    // => 0.3132002 
source.nextUniform()    // => 0.5559791 
source.nextIntWithUpperBound(20) // => 13 

let source2 = GKMersenneTwisterRandomSource(seed: 123) 
source2.nextUniform()    // => 0.3132002 
source2.nextUniform()    // => 0.5559791 
source2.nextIntWithUpperBound(20) // => 13 

Согласно Apple's documentation,

... если инициализировать экземпляр GKMersenneTwisterRandomSource и совместимой реализацию, используя то же начальное значение, как генерировать the такая же последовательность цифр.

Я читаю это, чтобы сказать, что он должен давать «соответствие» с реализацией ссылок C++ или Java, источник которой можно загрузить с сайта mt19937, связанного выше.


ADDENDUM

Похоже, что реализация GameplayKit дает воспроизводимые результаты, но вывод не соответствует эталонной реализации Хиросимы. Here's a port Быстро, что я сделал пару лет назад из стандартной реализации C для mt19937. Это дает идентичные результаты, как реализация ссылки на С, при посеве идентично. Таким образом, порт Java доступен по ссылке, предоставленной ранее, поэтому это должно дать вам решение, совместимое между платформами.

+0

Он работал в Swift, но я до сих пор не нашел код, который работает с Java. – Erosion

Смежные вопросы