Случайное простое число

WPF имеет встроенные преобразователи для определенных типов. При привязке свойства Image's Source с string или Uri значение, под капотом, WPF будет использовать ImageSourceConverter для преобразования значения в ImageSource.

Так


работал бы, если бы свойство ImageSource было строковым представлением допустимого URI к изображению.

Вы можете, конечно, самокрутка Обязательный преобразователь:

public class ImageConverter : IValueConverter
{
    public object Convert(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        return new BitmapImage(new Uri(value.ToString()));
    }

    public object ConvertBack(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

и использование это как это:


16
задан gmile 20 November 2009 в 10:45
поделиться

4 ответа

  1. Генерировать 1024 случайных бита. Используйте случайный источник, который достаточно силен для вашего намеченного назначения.

  2. Установите старший и младший биты в 1. Это гарантирует отсутствие ведущих нулей (первичный кандидат достаточно велик) и не четное число (определенно не простое).

  3. Тест на простоту . Если это не простое число, вернитесь к 1.

Или используйте библиотечную функцию, которая генерирует простые числа.

25
ответ дан 30 November 2019 в 15:35
поделиться

Use a library function, such as OpenSSL. There's no need to write this yourself.

Example: http://ardoino.com/7-maths-openssl-primes-random/

22
ответ дан 30 November 2019 в 15:35
поделиться

1024 - это много. Вы уверены, что вероятностное простое число не подойдет? Генератор вероятностных простых чисел является частью JDK

3
ответ дан 30 November 2019 в 15:35
поделиться

To trade memory for speed you could just generate them and store them in a list and then randomly pick one.

Edit: Naturally you can't generate them all so the best you could achieve is pseudo randomness at a high memory cost. Also this isn't good if you want it for security.

0
ответ дан 30 November 2019 в 15:35
поделиться