Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 20:02   #11
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Зачем так усложнять?
Код:
ProcNul := 15;
for j := 1 to n do
  if random(100) < ProcNul then A[j] := 0 else A[j] := 1;
ProcNul - процент нулей в массиве.
P.S. Сразу скажу, чтоб не придирались - заполняется статический массив размерности n нулями и единицами, нулей будет не ровно 15%, но их количество будет стремится к этому числу справа и слева (как впрочем и random(2) не даёт ровно 50% при малых значениях n)

это весь код?
duff вне форума Ответить с цитированием
Старый 07.04.2010, 20:16   #12
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

ребята спасибо что вы отзываетесь,
Вот привожу полностью полностью код программы которая уже написана, и что надо доделать. Если что помогите плиз.

код

Program ky6_;
uses crt;
Var Ax : Array [0..1000] Of real;
Ay : Array [0..1000] Of real;
Az : Array [0..1000] Of real;
Ae : Array [0..1000] of real;
An : Array [0..1000] of integer;
F: text;
j11,j22 : real;
j,b,j2,j1: integer;
x,y,z,e: real;
a,Nx,Ny,Nz,i,i1,i2,i3,m,n,k : integer;
Begin
clrscr;
randomize;
assign(F,'c:\File.txt');
Rewrite(F);


write('BBeDuTe 4uCJIo Do KoToPoro Hy}{Ho PaCIIPoCTPaHuTb X --- ');
readln(Nx);
write('BBeDuTe 4uCJIo Do KoToPoro Hy}{Ho PaCIIPoCTPaHuTb Y --- ');
readln(Ny);
write('BBeDuTe 4uCJIo Do KoToPoro Hy}{Ho PaCIIPoCTPaHuTb Z --- ');
readln(Nz);





i:=0;i1:=0;i2:=0;i3:=0;
For m:=0 To Nx Do
Begin
For n:=0 To Ny Do
Begin
For k:=0 To Nz Do
Begin
x:=(m); y:=(n); z:=(k);
if (m+n+k) mod 2 =0 then e:=1 else e:=-1;
Ax[i]:=x;
Ay[i]:=y;
Az[i]:=z;
Ae[i]:=e;
i:=i+1;
End;
End;
End;
i1:=i;
i:=0;
For m:=0 To Nx Do
Begin
For n:=0 To Ny Do
Begin
For k:=0 To Nz Do
Begin
x:=(m); y:=(n+1/2); z:=(k+1/2);
if (m+n+k) mod 2=0 then e:=1 else e:=-1;

Ax[i1]:=x;
Ay[i1]:=y;
Az[i1]:=z;
Ae[i1]:=e;
i1:=i1+1;
End;
End;
End;
i2:=i1;
i1:=0;
For m:=0 To Nx Do
Begin
For n:=0 To Ny Do
Begin
For k:=0 To Nz Do
Begin
x:=(m+1/2); y:=(n); z:=(k+1/2);
if (m+n+k) mod 2=0 then e:=1 else e:=-1;
Ax[i2]:=x;
Ay[i2]:=y;
Az[i2]:=z;
Ae[i2]:=e;
i2:=i2+1;
End;
End;
End;
i3:=i2;
i2:=0;
For m:=0 To Nx Do
Begin
For n:=0 To Ny Do
Begin
For k:=0 To Nz Do
Begin
x:=(m+1/2); y:=(n+1/2); z:=(k);
if (m+n+k) mod 2=0 then e:=1 else e:=-1;

Ax[i3]:=x;
Ay[i3]:=y;
Az[i3]:=z;
Ae[i3]:=e;
i3:=i3+1;
End;
End;
End;
{zadaem massiv slu4aynih 4isel}
j1:=0;
j2:=0;
for j:=0 to (i+i1+i2+i3) do
An[j]:= random(2);

{zadaem s4et4ik pods4eta nulevih i nenulevih elementov massiva}
for b:=0 to (i+i1+i2+i3) do
if An[b]=0 then j1:=j1+1
else if An[b]=1 then j2:=j2+1;



{perevodim v prosentnoe sootnowenie}
j11:=trunc((j1*100)/i3);
j22:=trunc((j2*100)/i3);


For a:=0 To (i+i1+i2+i3) DO

writeln(a,' x= ',Ax[a]:2:2,' y= ',Ay[a]:2:2,' z= ', Az[a]:2:2,' m ',Ae[a]:2:2,' k ==',An[a]);
close(F);


writeln('nenugnie elementi ==',j11:3:3,' prosentov',' nugnie===',j22:3:3,' prosentov');

readkey;
readln;
end.
duff вне форума Ответить с цитированием
Старый 07.04.2010, 20:17   #13
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

Продолжение



В конце он выводит вот что

0 x= 0.00 y= 0.00 z= 0.00 m 1.00 k ==0
1 x= 0.00 y= 0.00 z= 1.00 m -1.00 k ==0
2 x= 0.00 y= 1.00 z= 0.00 m -1.00 k ==1
3 x= 0.00 y= 1.00 z= 1.00 m 1.00 k ==0
4 x= 1.00 y= 0.00 z= 0.00 m -1.00 k ==1
5 x= 1.00 y= 0.00 z= 1.00 m 1.00 k ==0
6 x= 1.00 y= 1.00 z= 0.00 m 1.00 k ==0
7 x= 1.00 y= 1.00 z= 1.00 m -1.00 k ==1
8 x= 0.00 y= 0.50 z= 0.50 m 1.00 k ==1
9 x= 0.00 y= 0.50 z= 1.50 m -1.00 k ==1
10 x= 0.00 y= 1.50 z= 0.50 m -1.00 k ==1
11 x= 0.00 y= 1.50 z= 1.50 m 1.00 k ==1
12 x= 1.00 y= 0.50 z= 0.50 m -1.00 k ==1
13 x= 1.00 y= 0.50 z= 1.50 m 1.00 k ==0
14 x= 1.00 y= 1.50 z= 0.50 m 1.00 k ==0
15 x= 1.00 y= 1.50 z= 1.50 m -1.00 k ==1
16 x= 0.50 y= 0.00 z= 0.50 m 1.00 k ==1
17 x= 0.50 y= 0.00 z= 1.50 m -1.00 k ==0
18 x= 0.50 y= 1.00 z= 0.50 m -1.00 k ==1
19 x= 0.50 y= 1.00 z= 1.50 m 1.00 k ==0
20 x= 1.50 y= 0.00 z= 0.50 m -1.00 k ==1
21 x= 1.50 y= 0.00 z= 1.50 m 1.00 k ==0
22 x= 1.50 y= 1.00 z= 0.50 m 1.00 k ==1
23 x= 1.50 y= 1.00 z= 1.50 m -1.00 k ==0
24 x= 0.50 y= 0.50 z= 0.00 m 1.00 k ==0
25 x= 0.50 y= 0.50 z= 1.00 m -1.00 k ==0
26 x= 0.50 y= 1.50 z= 0.00 m -1.00 k ==0
27 x= 0.50 y= 1.50 z= 1.00 m 1.00 k ==0
28 x= 1.50 y= 0.50 z= 0.00 m -1.00 k ==1
29 x= 1.50 y= 0.50 z= 1.00 m 1.00 k ==0
30 x= 1.50 y= 1.50 z= 0.00 m 1.00 k ==0
31 x= 1.50 y= 1.50 z= 1.00 m -1.00 k ==0
32 x= 0.00 y= 0.00 z= 0.00 m 0.00 k ==0
nenugnie elementi ==59.000 prosentov nugnie===43.000 prosentov

это фрагмент из файла
так вот он в k загоняет элементы An[j]:= random(2); и примерно по 50 процентов, ну так вот мне нужно чтобы он вначале проги спрашивал количество нулей выводить в процентах, и выводил это все в K
и в конце вышла статистика как у меня только вот уже подсчитанная, ну там типо количество элементов столько то процентов, ну чтобы сходилось с логикой вещей..

Помогите кто чем может.... в долгу не останусь
duff вне форума Ответить с цитированием
Старый 07.04.2010, 20:19   #14
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

кстати забыл сказать 32 он подсчитал для случая когда вводим вначале 111
duff вне форума Ответить с цитированием
Старый 07.04.2010, 23:42   #15
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

ооо Google2010 ты уже бесплатно помогаешь=)), ладно сколько с меня я тебе отправлю.=)) давай асю спишемся....

Последний раз редактировалось duff; 07.04.2010 в 23:44.
duff вне форума Ответить с цитированием
Старый 08.04.2010, 05:29   #16
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

вот553566179
Google2010 вне форума Ответить с цитированием
Старый 08.04.2010, 09:04   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

duff можно я добавлю свои 5 копеек?

я хочу предложить способ, который даст ГАРАНТИРОВАННОЕ заданное Вами процентное соотношение нулей и единиц (ну, в рамках максимально возможной точности - если зададите размер массива 3 элемента и попросите распределение 50%, то никак такой процент не получите ))

а способ ОЧЕНЬ простой.
1) по заданному размеру массива и заданному проценту распределения, считаем сколько должно быть нулей (или единиц, это неважно).
2) заполняем массив нужным числом нулей и единиц (прямо подряд)
3) перемешиваем в многократном цикле элементы массива.
всё.

p.s. идею решения навеяла задача по перетасовке колоды карт...

p.p.s. предложенный мною алгоритм очень прост, но, если понадобится помощь в реализации - помогу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.04.2010, 00:47   #18
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

Serge_Bliznykov помоги реализовать если не трудно.....
duff вне форума Ответить с цитированием
Старый 27.04.2010, 23:59   #19
duff
 
Регистрация: 07.04.2010
Сообщений: 9
По умолчанию

Serge_Bliznykov можешь помочь, ато я что то не могу
duff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка качества датчика псевдослучайных чисел SerG1ON Microsoft Office Excel 0 22.10.2009 15:38
Генератор псевдослучайных чисел Max- Помощь студентам 12 21.05.2009 21:06
Генерация последовательности псевдослучайных натуральных чисел с требуемым распределением вероятности elsin Фриланс 4 19.11.2008 08:57
генератор псевдослучайных чисел - распределение elsin Общие вопросы Delphi 12 15.05.2008 16:07