Вот одна простая проверка, которую можно выполнить. Это использует сгенерированные случайные числа для оценки Pi. Это не доказательство случайности, но плохие RNGs обычно не преуспевают на нем (они возвратят что-то как 2,5 или 3.8 скорее ~3.14).
Идеально это было бы только одним из многих тестов, которые Вы запустите для проверки случайности.
Что-то еще, что можно проверить, стандартное отклонение из вывода. Ожидаемое стандартное отклонение для равномерно распределенного населения значений в диапазоне 0.. n приближается к n/sqrt (12).
/**
* This is a rudimentary check to ensure that the output of a given RNG
* is approximately uniformly distributed. If the RNG output is not
* uniformly distributed, this method will return a poor estimate for the
* value of pi.
* @param rng The RNG to test.
* @param iterations The number of random points to generate for use in the
* calculation. This value needs to be sufficiently large in order to
* produce a reasonably accurate result (assuming the RNG is uniform).
* Less than 10,000 is not particularly useful. 100,000 should be sufficient.
* @return An approximation of pi generated using the provided RNG.
*/
public static double calculateMonteCarloValueForPi(Random rng,
int iterations)
{
// Assumes a quadrant of a circle of radius 1, bounded by a box with
// sides of length 1. The area of the square is therefore 1 square unit
// and the area of the quadrant is (pi * r^2) / 4.
int totalInsideQuadrant = 0;
// Generate the specified number of random points and count how many fall
// within the quadrant and how many do not. We expect the number of points
// in the quadrant (expressed as a fraction of the total number of points)
// to be pi/4. Therefore pi = 4 * ratio.
for (int i = 0; i < iterations; i++)
{
double x = rng.nextDouble();
double y = rng.nextDouble();
if (isInQuadrant(x, y))
{
++totalInsideQuadrant;
}
}
// From these figures we can deduce an approximate value for Pi.
return 4 * ((double) totalInsideQuadrant / iterations);
}
/**
* Uses Pythagoras' theorem to determine whether the specified coordinates
* fall within the area of the quadrant of a circle of radius 1 that is
* centered on the origin.
* @param x The x-coordinate of the point (must be between 0 and 1).
* @param y The y-coordinate of the point (must be between 0 and 1).
* @return True if the point is within the quadrant, false otherwise.
*/
private static boolean isInQuadrant(double x, double y)
{
double distance = Math.sqrt((x * x) + (y * y));
return distance <= 1;
}
Mobile Safari не поддерживает позицию: исправлено (по крайней мере, не так, чтобы это было полезно для веб-разработки).
В качестве альтернативы вы можете попробовать реализовать это решение javascript
Как указал Томас, в текущей версии Mobile Safari, работающей на iPhone, это не поддерживается.
Если вы все равно используете jQTouch, обратите внимание на «floaty» расширение, которое поставляется вместе с последними загрузками. Он добавляет плавающий div, который перемещается вместе с вашей прокруткой, хотя и с некоторой задержкой. Поведение очень похоже на панель «архив» в мобильном интерфейсе GMail.
Вот страница расширений на jQTouch, на которой упоминается floaty: http://code.google.com/p/jqtouch/wiki/Extensions
Просто скачайте последний пакет, и все будет там. Это не идеальное решение, но лучше, чем ничего.
Проверьте этот плагин для jQTouch - http://code.google.com/p/jqtscroll/