2016-05-26 2 views
1

Я пытаюсь разобраться, что распределения различных функций рандомизации выглядеть в Xcode, так что я сделал эту детскую площадку:Правильно черчение массива в Xcode 7.3.1 Playgrounds

import UIKit 
import XCPlayground 

var distribution: [Int] = Array(count: 6, repeatedValue: 0) 
for i in 1...100000 { 
    let randomNumber = arc4random_uniform(6) 
    distribution[Int(randomNumber)] += 1 
    XCPlaygroundPage.currentPage.captureValue(distribution[Int(randomNumber)], withIdentifier: "Random Distribution") 
} 

То, что я надеялся увидеть был линию вдоль нижней части диаграммы, изображающую нормальное (или плоское) распределение, но вместо этого я получил эту диагональную линию. Как я могу получить уровень?

+1

Я просто фиксируя странные артефакты, которые появились в коде, когда вы бьете меня к этому лол. спасибо, @Eric –

ответ

2

Вы захватывая ценности, как вы собираете их, вы хотите, конечные значения вместо:

for i in 0..<6 { 
    XCPlaygroundPage.currentPage.captureValue(distribution[i], withIdentifier: "Distribution") 
} 
+0

Я считаю, что это решение; но Xcode автоматически расширяет результат графика вертикально, чтобы занять все пространство, то же самое для вас? Сначала он показывает ровную линию, затем он расширяет результат по оси Y. Я не знаю, можем ли мы это сделать иначе. – Moritz

+0

@EricD, который может иметь смысл, за исключением того, что массив выглядит примерно как [1650, 1705, 1704, 1698, 1651, 1592], и поэтому то, что я желаю, на самом деле, это всего лишь график с 6 значениями (будучи тем, что i «Я смотрю на распределение выборов между 6 номерами.) Возможно, если бы я сделал диапазон из 100 чисел с помощью итераций 10K, я бы получил больше нормальной кривой или плоской кривой в зависимости от того, какой случайный источник я использовал, но, m не слишком уверен, что график, на который я смотрю, имеет 6 баллов. это больше похоже на 10000 ... –

0

Хорошо я возился, и это работает очень хорошо.

var distribution: [Int] = Array(count: 6, repeatedValue: 0) 
let distributionSource = GKARC4RandomSource() 
distributionSource.dropValuesWithCount(1024) 
for i in 1...10000 { 
    let randomNumber = distributionSource.nextIntWithUpperBound(6) 
    distribution[Int(randomNumber)] += 1 
} 
for value in distribution { 
XCPlaygroundPage.currentPage.captureValue(value, withIdentifier: "Random Distribution") 
} 

теперь я могу изменить номера и увидеть мои кривые :-)

+0

теперь все, что мне нужно знать, это то, что заменило XCPlaygroundPage.currentPage.captureValue (значение, withIdentifier :) после Xcode 7.3.1 –

+0

Приятно и быстро! :) // Я думаю, что captureValue устарел, потому что они предпочитают использовать встроенные графики. Для этого вы просто указываете значение для проверки в цикле, и вы нажимаете на знак + справа. [См. Мой снимок экрана.] (Https://www.evernote.com/l/AFmM3poWESBESovQfM1PugbDMwCwdeyBAGI) – Moritz

+0

О, это огромное улучшение! Я просто хочу, чтобы в каждом случае устаревания Xcode предлагал новую альтернативу. –

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

  • Нет связанных вопросов^_^