• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Генерация Случайных Чисел.

  • Автор темы Автор темы Sascha
  • Дата начала Дата начала

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,551
Баллы
155
Добрый день, сегодня я заведу разговор о том, как можно сгенерировать случайное число.

Случайное оно будет, конечно, только условно. Часто такого рода числа называют псевдослучайными. Но не переживайте в этом нет ничего страшного. В этой статья я разберу несколько функций, а также продемонстрирую их применение на практике.

Первая функция, которой я пользуюсь чаще всего- Random(), она генерирует случайное целое число или число с плавающей запятой.

Random(1000000) – генерирует целое число от 0 до 999999

Random() – генерирует число с плавающей точкой от 0 до 1

Следующая функция - RandomRange(X,Y), функция принимает два параметра и возвращает целое число, которое больше Х и меньше Y. Перед использованием нужно подключить библиотеку Math.

RandomRange(10,100) – генерирует целое число от 10 до 100.

И последняя функция, которую я применяю на практике - RandG(X,Y), она также принимает пару входных значений и генерирует псевдослучайное число, используя распределение Гаусса. Для неё также необходимо подключить Math.

RandG(100,10) – сгенерирует число с плавающей точкой от 90 до 110 (то есть в границах от 100-10 до 100+10)

Ещё хочу показать несколько простых приемов:

Сгенерировать дробное число от 0 до 1 можно следующим образом –

random(1000000000) / (9999999999)

А получить дробное число от 0 до 100 можно так –

Random(100)+(random(100000000) / (99999999)

Думаю смысл этих выражений пояснять не нужно.

Давайте перейдем от слов к делу и попробуем все на практике.

Создайте новое оконное приложение и разместите на главной форме шесть editи шесть button. Приведите все к виду, как изображено на рисунке.
2013-09-04_145234.png

Код будет следующим:
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Button2: TButton;
    Edit3: TEdit;
    Button3: TButton;
    Edit4: TEdit;
    Button4: TButton;
    Edit5: TEdit;
    Button5: TButton;
    Edit6: TEdit;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=IntTostr(Random(1000000));   // Случайное целое число от 0 до 999999
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit2.Text:=IntToStr(RandomRange(65, 650)); // Генерируем целое число на интервале от 65 до 650
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit3.Text := FloatToStr(random(99999999) / (99999999)); // Генерируем дробное число от 0 до 1
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
 Edit4.Text:=FloatToStr(Random);  // Генерируем дробное число от 0 до 1
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
  Edit5.Text:=FloatToStr(Random(100)+(random(100000000) / (99999999)));    // Генерируем дробное число от 0 до 100
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
  Edit6.Text:= FloatToStr(RandG(100,10));  // Генерирует псевдослучайное число, используя распределение Гаусса.
end;
end.
Надеюсь, что после данной статьи у Вас не возникнет больше вопросов о генерации случайных чисел. Если же они будут – пишите комментарии, я в свою очередь постараюсь на все вопросы ответить.
 
Вверх Снизу