Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить случайные числа, помимо random'a 
:(
    Опции темы
Delphist
Дата 1.11.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Мне нужно получаться случайные числа в определенном интервале, я знаю 2 способа:

Код

randomize
random

GetTickCount


А еще какие есть способы? 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Rennigth
Дата 1.11.2007, 16:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76





--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Delphist
Дата 1.11.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Rennigth @  1.11.2007,  17:23 Найти цитируемый пост)
http://algolist.manual.ru/maths/generator/index.php 

Бред какой-то. Вот к примеру взял вот этот код: http://algolist.manual.ru/maths/generator/inline.php
перевел на делфи

Код

function
  Unirand2: double;
const
 rand_m = 714025;
 rand_a = 4096;
 rand_c = 150889;
var
  iran: integer;
begin

(* floating-point fran uniformly from 0 to 1 *)
  iran := (iran * rand_a+rand_c) mod rand_m;
  result := iran / rand_m;
end;

И ни хрена он не генерит случайную последовательность


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
dumb
Дата 1.11.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Delphist @  1.11.2007,  17:55 Найти цитируемый пост)
Бред какой-то.
такое высказывание наиболее применимо к твоему "переводу". как минимум - iran вынести за пределы функции, а константы сделать dword'овыми.
PM MAIL   Вверх
Delphist
Дата 1.11.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(dumb @  1.11.2007,  19:22 Найти цитируемый пост)
такое высказывание наиболее применимо к твоему "переводу". как минимум - iran вынести за пределы функции, а константы сделать dword'овыми

Тоже самое, вот смотри сделал как ты сказал

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  iran: dword;

implementation

{$R *.dfm}

const
 rand_m: dword = 714025;
 rand_a: dword = 4096;
 rand_c: dword = 150889;

function
  Unirand2: double;
var
  iran: integer;
begin

(* floating-point fran uniformly from 0 to 1 *)
  iran := (iran * rand_a+rand_c) mod rand_m;
  result := iran / rand_m;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

  ShowMessage(FloattOsTR(Unirand2));
end;




--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
dumb
Дата 1.11.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Цитата(Delphist @  1.11.2007,  20:22 Найти цитируемый пост)
function
  Unirand2: double;
var
  iran: integer;
begin


PM MAIL   Вверх
Delphist
Дата 2.11.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(dumb @ 1.11.2007,  21:35)
Цитата(Delphist @  1.11.2007,  20:22 Найти цитируемый пост)
function
  Unirand2: double;
var
  iran: integer;
begin

Да так и сделал, просто сначала забыл выкинуть из локального объявления, если выкинуть, то работает, правда есть один недостаток, а именно:
запускаю я программу щелкаю по кнопке Button1 и генерятся случайные числа, например 0.211, 0.785, 0.135, 0.83 и т.д. Выключаю программу, включаю начинаю щелкать и по кнопке и возникает таже послед-ть 0.211, 0.785, 0.135, 0.83 как этого избежать?


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
stab
Дата 2.11.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Delphist, свой randomize сделать, т.е. проинициализировать iran значением из GetTickCount перед первым использованием.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Delphist
Дата 2.11.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(stab @  2.11.2007,  11:07 Найти цитируемый пост)
Delphist, свой randomize сделать, т.е. проинициализировать iran значением из GetTickCount перед первым использованием. 

Вся эта батва, хакером, будет проанализирована влёт, найдет все места где используюется GetTickCount и сделает соответствующие действия.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
stab
Дата 2.11.2007, 10:54 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Delphist, вопрос был в том как сделать не повторяющуюся последовательность, про взлом там ни слова не было. Хакера же не остановит даже передача абсолютно случайных данных со спутника по сверх-криптостойким каналам, если он сможет добраться до функции, которая возвращает принятое значение. Ничто ему не помешает сделать так, чтобы ваш Unirand2 всегда возвращал 0. Отсюда вывод - код надо защищать с помощью специальных технологий защиты кода, а данные с помощью криптографических технологий, алгоритм сам по себе не может быть устойчивым ко взлому. Не имея доступа к коду и данным, что-либо сломать, согласитесь, сложно.

Велосипедостроение - личный выбор каждого, rdtsc вам в помощь.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.