Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Замерить сколько потоков завершится, запуская их случайным образом

Требования: Использование только вызовов API.
Задание: Создать 5 потоков приостановленными. Внутри каждого потока должна быть реализована задержка в 10 с. Основной поток 70 секунд пытается на 1 одну секунду запустить один из наудачу выбранный поток. Выяснить, какое количество потоков завершат своё выполнение. Эксперимент повторить 3 раза.
Подскажите как реализовать задачу? если можно, в вкратце алгоритм..Заранее спасибо)
Ответ: WinAPI

Добавлено через 11 часов 7 минут
где то так, правда есть одна проблема.. если поток уже запущен и мы повторно его вызываем в момент его задержки, как он будет себя вести?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
void Sleep(BYTE time)
{
    return Sleep((DWORD)time * 1000);
}
 
int i;
HANDLE p1,p2,p3,p4,p5;
LPDWORD ThreadId;
LPVOID ThrdParam;
DWORD WINAPI ThreadProc(LPVOID ThrdParam);
DWORD rt;
 
 
int main()
{
//setlocale(LC_CTYPE, "Russian");
int L, j;
    
 
for (j = 0; j < 3; j++) //Эксперимент повторяем 3 раза.
{
 
    while (true)
    {                   //создаем 5 потоков приостоновленными
        p1 = CreateThread(NULL, 0, ThreadProc, NULL, CREATE_SUSPENDED, ThreadId); 
        p2 = CreateThread(NULL, 0, ThreadProc, NULL, CREATE_SUSPENDED, ThreadId);
        p3 = CreateThread(NULL, 0, ThreadProc, NULL, CREATE_SUSPENDED, ThreadId);
        p4 = CreateThread(NULL, 0, ThreadProc, NULL, CREATE_SUSPENDED, ThreadId);
        p5 = CreateThread(NULL, 0, ThreadProc, NULL, CREATE_SUSPENDED, ThreadId);
 
        clock_t time = clock();
 
        L = rand() % 5 + 1;  //наугад выбираем поток
        //  cout << L   ;
        switch (L)
        {
        case 1: {rt = ResumeThread(p1), Sleep((BYTE)1); }
            break;
        case 2:{rt = ResumeThread(p2), Sleep((BYTE)1); }
            break;
        case 3:{rt = ResumeThread(p3), Sleep((BYTE)1); }
            break;
        case 4:{rt = ResumeThread(p4), Sleep((BYTE)1); }
            break;
        case 5:{rt = ResumeThread(p5), Sleep((BYTE)1); }
            break;
        }
 
if (double(time) / CLOCKS_PER_SEC >= 70) // в секундах если в мили секунды то if (double(time) >= 2000)
            break;
    }
}
        cout << i ;
        cout << "Всё ";
    _getch();
    return 0;
 
}
 
 
DWORD WINAPI ThreadProc(LPVOID ThrdParam)
{
    
    Sleep((BYTE)10);
    i++;                     //наш счетчик количества потоков, которые завершат свою работу
    return 0;
}
Вопрос: 1) заполнить массив A (40) случайным образом целыми числами с диапазона [100, 999]

Не компилируется!
Помогите что не так в програме, Не могу сделать условие чтобы сортировало только числа кратные 5
Составить программу, по которой:
1) заполнить массив A (40) случайным образом целыми числами с диапазона [100, 999];
2) вывести элементы массива на экран в строку;
3) упорядочить диапазон элементов массива при следующих условиях:
Диапазон элементов массива:
Первый :8
Последний:38
Метод упорядочения: выбором
Свойства элементов массива: кратные 5
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const MaxN = 38;
type TElement = real; TMas = array[8..MaxN] of TElement;
var A : TMas; Nmin, i,N, j : Integer; T :TElement;
 begin
  N:=40;
  randomize;
   for i:=1 to N do begin
   a[i]:=100+Random(900);end;
 WriteLn('До сортировки:');
for i := 1 to N do Write(a[i],' '); WriteLn;
for i := n downto 2 do
for j := 1 to i-1 do
if a[j] > a[j+1]
then begin T := a[j]; a[j] := a[j+1]; a[j+1] := T;
end;
WriteLn('отсортирован:');
for i:=1 to N do
if a[i] mod 5=10 then begin
 write(a[i]);
 end;
   readln;
 end.
Ответ: 1.
Сообщение от yarok1996
1) заполнить массив A (40) случайным образом целыми числами с диапазона [100, 999];
Pascal
1
2
type
  TElement = integer;
2.
Сообщение от yarok1996
Свойства элементов массива: кратные 5
Pascal
1
if a[i] mod 5=0 then begin
Добавлено через 11 минут
Сортировать нужно не так.
1. Просматриваешь массив от 8 до 38. Ищешь первый элемент кратный 5.
2. Просматриваешь массив от индекса первого кратного 5 элемента до 38. Ищешь самый маленький из кратных 5.
3. Обмениваешь его с первым найденным.
4. Повторяешь пункты 1-3 но не от 8 индекса, а от первого найденного.

Добавлено через 1 час 9 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
program test;
 
const
  NMax = 40;
  NSortMin = 8;
  NSortMax = 38;
type
  TElement = integer;
  TMas = array[1..NMax] of TElement;
var
  A: TMas;
  i, j, Indx: integer;
  tmp: TElement;
begin
  randomize;
  for i := 1 to NMax do
  begin
    a[i] := 100 + Random(900);
  end;
  WriteLn('До сортировки:');
  for i := 1 to NMax do
    Write(a[i], ' ');
  WriteLn;
  for i := 1 to NMax do
    if (a[i] mod 5 = 0) and (i >= NSortMin) and (i <= NSortMax) then
      Write('*** ')
    else
      Write('    ');
  writeln;
  for i := NSortMin to NSortMax do
  begin
    if a[i] mod 5 <> 0 then
      continue;
    Indx := i;
    for j := i + 1 to NSortMax do
    begin
      if (a[j] mod 5 = 0) and (a[j] < a[Indx]) then
        Indx := j;
    end;
    tmp  := a[i];
    a[i] := a[Indx];
    a[Indx] := tmp;
  end;
  WriteLn('отсортирован:');
  for i := 1 to NMax do
    Write(a[i], ' ');writeln;
  for i := 1 to NMax do
    if (a[i] mod 5 = 0) and (i >= NSortMin) and (i <= NSortMax) then
      Write('*** ')
    else
      Write('    ');
  writeln;
  readln;
end.
Вопрос: Написать программу, которая случайным образом заполняет двумерный массив размером 5х5 цифрами от 0 до 10

Кто знает как решить задачу на С++, при помощи двумерного массива?
Написать программу, которая случайным образом заполняет двумерный
массив размером 6х6 цифрами от 0 до 10 и одномерный массив из 6-ти
чисел. Нужно нечетные строки двумерного массива заменить на одномерный
массив.
Ответ: Кто в курсе как решить задачу на С++, при помощи двумерного массива?
Написать программу, которая случайным образом заполняет двумерный
массив размером 5х5 цифрами от 0 до 10. Поменять местами главную и
побочную диагональ.
Вопрос: Выбор счастливого билета случайным образом

Привет всем! Недавно начал изучать C#. И вот наткнулся на задачку о счастливом билете. Но решил себе немного усложнить задание и решил запрограммировать создание счастливого билета случайным способом. Вот, хочу поделиться опытом.

Несколько предусловий:
1. В билете 6 цифр.
2. Счастливым билет считается, когда сумма первых трех цифр равна сумме других трех.

Мои действия в конструкторе:
1. Создал целочисленный массив и инициализировал его случайными значениями от 0 до 9.
2. Сравнил суммы левой (lSum) и правой (rSum) части, чтобы определить куда потом добавлять числа для получения lucky ticket.
3. Сосчитал разницу (RizSum) между левой частью и правой и взял ее по модулю. Эту разницу потом нужно будет "раскидать" по меньшей части билета.
4. Далее работаем с меньшей частью (для этого определяется стартовая позиция x в цикле) для каждой цифры: если разница плюс первая цифра больше девяти, то "докидываем" к цифре по максимуму из разницы, чтобы вышло "9", а потом о пересчитываем разницу, убирая уже потраченное на первую цифру. И так до тех пор, пока не распределим разницу до нуля по всей меньшей части (ну или на сколько ее хватит).
5. Конвертируем полученный lucky ticket из массива в одну строку.
6. Ну и создаем метод для получения этой строки. Это и будет "переделанный" счастливый билет.
Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
class LuckyTicket
{
    int[] tMas;
    string ticket;
    public LuckyTicket()
    {
        int i;
        tMas = new int[6];
 
        Random rnd = new Random();
        Console.Write("Выбранный случайным образом номер билета: ");
        for (i = 0; i < 6; i++) {
            tMas[i] = rnd.Next(0, 9);
            Console.Write(tMas[i]);
        }
 
        int lSum, rSum, RizSum;
        lSum = tMas[0] + tMas[1] + tMas[2];
        rSum = tMas[3] + tMas[4] + tMas[5];
        RizSum = lSum - rSum;
 
        int x;
        x= RizSum >= 0 ? 3 : 0;
        RizSum = Math.Abs(RizSum);
        for (i = x; i < (x + 3); i++)
            if ((RizSum + tMas[i]) >= 9) {
                RizSum -= (9-tMas[i]);
                tMas[i] = 9;
                if (RizSum == 0) break;
            }
            else {
                tMas[i] += RizSum;
                break;
            }
        foreach (int t in tMas) ticket += Convert.ToString(t);
    }
    public string GetTicket() {
        return ticket;
    }
}
class LuckyMain {
    static void Main() {
        LuckyTicket ob = new LuckyTicket();
        Console.Write("\nСчастливый билет: {0}\n",ob.GetTicket());
    }
}
Ответ: Это не вопрос, а просто хотел поделиться способом таким вот.
Да, можно взять случайное 6-значное число и проверить сумму левой и правой части, но что, если рандом постоянно будет выдавать такое число, что не подходит под "счастливый билет". Все-таки число из 6 цифр, довольно большое.
Мне был интересен сам процесс доведения обычного числа до того, что нам нужно
Вопрос: Сгенерировать случайным образом многочлен P(x) степени N и найти интеграл P(x) от a до b для заданных a и b

Сгенерировать случайным образом многочлен P(x) степени N и найти интеграл P(x) от a до b для заданных a и b. Мыслей совсем нет, подскажите хотя бы общую концепцию, буду благодарен.
Ответ: Многочлен удобно хранить в виде массива (вектора) коэффициентов. Тогда генерирование случайного многочлена сводится к генерированию n случайных чисел (точнее, n+1, если n - степень многочлена).
Интегрирование сводится к интегрированию суммы степенных функций. Формулы все известны.
Вопрос: Разработайте функцию, добавляющую на изображение 1000 точек с координатами заданными случайным образом

Всем привет есть обработчик изображения
Кликните здесь для просмотра всего текста

Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
 
{
    public partial class Form1 : Form
    {
 
        private Point PreviousPoint, point;
        private Bitmap bmp;
        private Pen blackPen;
        private Graphics g;
        Random r=new Random();
        Random r1=new Random();
 
        public Form1()
        {
            InitializeComponent();
 
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            blackPen = new Pen(Color.Black, 4);
 
        }
 
        private void pictureBox1_Click(object sender, EventArgs e){ }
 
        private void button1_Click(object sender, EventArgs e)
 
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "Image files (*.BMP, *.JPG, *.GIF, *.TIF, *.PNG, *.ICO, *.EMF, *.WMF)|*.bmp;*.jpg;*.gif; *.tif; *.png; *.ico; *.emf; *.wmf"
            if (dialog.ShowDialog() == DialogResult.OK)//вызываем диалоговое окно и проверяем выбран ли файл
            {
                Image image = Image.FromFile(dialog.FileName); //Загружаем в image изображение из выбранного файла
                int width = image.Width;
                int height = image.Height;
                pictureBox1.Width = width;
                pictureBox1.Height = height;
                bmp = new Bitmap(image, width, height); //создаем и загружаем из image изображение в форматье bmp
                pictureBox1.Image = bmp; //записываем изображение в формате bmp в pictureBox1
                g = Graphics.FromImage(pictureBox1.Image);
            }
        }
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            PreviousPoint.X = e.X;
            PreviousPoint.Y = e.Y;
        }
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left) //Проверяем нажата ли левая кнопка мыши
            {   //запоминаем в point текущее положение курсора мыши
                point.X = e.X;
                point.Y = e.Y;
                //соеденяем линией предыдущую точку с текущей
                g.DrawLine(blackPen, PreviousPoint, point);
                //текущее положение курсора мыши сохраняем в PreviousPoint
                PreviousPoint.X = point.X;
                PreviousPoint.Y = point.Y;
                pictureBox1.Invalidate();//Принудительно вызываем перерисовку pictureBox1
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            SaveFileDialog savedialog = new SaveFileDialog();//описываем и порождаем объект savedialog 
            //задаем свойства для savedialog
            savedialog.Title = "Сохранить картинку как ...";
            savedialog.OverwritePrompt = true;
            savedialog.CheckPathExists = true;
            savedialog.Filter =
 
                "Bitmap File(*.bmp)|*.bmp|" +
 
                "GIF File(*.gif)|*.gif|" +
 
                "JPEG File(*.jpg)|*.jpg|" +
 
                "TIF File(*.tif)|*.tif|" +
 
                "PNG File(*.png)|*.png";
            savedialog.ShowHelp = true;
            // If selected, save
            if (savedialog.ShowDialog() == DialogResult.OK)//вызываем диалоговое окно и проверяем задано ли имя файла
            {
                // в строку fileName записываем указанный в savedialog полный путь к файлу
                string fileName = savedialog.FileName;
                // Убираем из имени три последних символа (расширение файла)
                string strFilExtn =fileName.Remove(0, fileName.Length - 3);
                // Сохраняем файл в нужном формате и с нужным расширением
                switch (strFilExtn)
                {
                    case "bmp":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
                        break;
                    case "jpg":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                        break;
                    case "gif":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif);
                        break;
                    case "tif":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff);
                        break;
                    case "png":
                        bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
                        break;
                    default:
                        break;
 
                }
            }
        }
        private void button3_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < bmp.Width; i++)
                for (int j = 0; j < bmp.Height; j++)
                {
                    int R = bmp.GetPixel(i, j).R; //извлекаем в R значение красного цвета в текущей точке
                    int G = bmp.GetPixel(i, j).G; //извлекаем в G значение зеленого цвета в текущей точке
                    int B = bmp.GetPixel(i, j).B; //извлекаем в B значение синего цвета в текущей точке
                    int Gray = (R = G + B) / 3; // высчитываем среденее арифметическое трех каналов
                    Color p = Color.FromArgb(255, Gray, Gray, Gray); //переводим int в значение цвета. 255 - показывает степень прозрачности. остальные значения одинаковы для трех каналов R,G,B
                    bmp.SetPixel(i, j, p); //записываме полученный цвет в текущую точку
                }
 
            Refresh(); //вызываем функцию перерисовки окна
        }
        private void button4_Click(object sender, EventArgs e)
        {
            g.DrawLine(blackPen, r, r1);
        }
    }
 
}


нужно :
Кликните здесь для просмотра всего текста
2) Разработайте функцию, добавляющую на изображение 1000 точек с координатами заданными случайным образом. Цвет, также, задается случайным образом.

Пробовал через random
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
public partial class Form1 : Form
    {
        private Point PreviousPoint, point;
        private Bitmap bmp;
        private Pen blackPen;
        private Graphics g;
        Random r=new Random();
        Random r1=new Random();
private void button4_Click(object sender, EventArgs e)
        {
            g.DrawLine(blackPen, r, r1);
        }
выходит
Кликните здесь для просмотра всего текста
Ошибка 1 Наиболее подходящий перегруженный метод для "System.Drawing.Graphics.DrawLine(System.Drawing.Pen, System.Drawing.Point, System.Drawing.Point)" имеет несколько недопустимых аргументов C:\Documents and Settings\student\Рабочий стол\asqarov\11lab\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 144 13 WindowsFormsApplication1

укажите пожалуйста что не так?
заранее спасибо
Ответ:
Цитата Сообщение от Legomegger Посмотреть сообщение
укажите пожалуйста что не так?
Зачем вы передаете объекты класса Random в метод DrawLine?
Там же четко написано что нужно передавать System.Drawing.Point.
Надо что то подобное
Код C#
1
2
3
4
5
Random rnd =new Random();
 
Point p1 = new Point(rnd.Next(0,100), rnd.Next(0,200));
Point p2 = new Point(rnd.Next(0,100), rnd.Next(0,200));
g.DrawLine(blackPen, p1, p2);
Да и хотите точки, а рисуете линию. С точками тут беда какаято, попробуйте Bitmap.SetPixel или DrawRectangle с минимальными размерами.
Вопрос: Строка: лово формируется по правилу: первая буква - случайным образом заданная русская согласная...

Добрый день! Помогите, пожалуйста, решить задачку

Слово формируется по правилу: первая буква - случайным образом заданная русская согласная, вторая буква – случайным образом заданная русская гласная и т.д. Всего n букв (n может быть нечетным числом)
Ответ:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const gl:string[10]='аеёиоуыэюя';
      sg:string[23]='бвгджзйклмнпрстфхцчшщъь';
var s:string;
    n,i:byte;
begin
randomize;
repeat
write('Длина строки от 1 до 255 n=');
readln(n);
until n in [1..255];
s:='';
for i:=1 to n do
if odd(i)then s:=s+sg[1+random(23)]
else s:=s+gl[1+random(10)];
write(s);
end.
Вопрос: Дан двумерный массив размером n*m, заполненный случайным образом(надо устранить ошибку)

Дан двумерный массив размером n*m, заполненный случайным образом.
1. Заменить максимальный элемент каждой строки на противоположный.
2. Вставить после всех столбцов, содержащий максимальный элемент столбцов из нулей.
3. Удалить все столбцы, в которых есть отрицательный элемент.
4. Поменять местами первый и последний столбцы.
вот код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Program Z3;
const n = 4;
      m = 5;
var i, j,jmx,mx,k,x: integer;
    A: array [1..n*2, 1..m] of integer;
begin
    {формирование массива случайным образом}
 randomize;
     for i:= 1 to n do
     for j:= 1 to m do
     A[i, j]:= random(20);
     Writeln ('Исходный массив');
     For i:=1 to n do
     begin
          For j:=1 to m do
          write(a[i,j]:5);
          writeln;
     end;
{пункт1}
for i:=1 to n do
 begin
 jmx:=1;
 for j:=1 to m do
  if a[i,j]>a[i,jmx] then jmx:=j;
  a[i,jmx]:=-a[i,jmx];
 end;
writeln('Замена максимальных в строках на противположные');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
 {пункт 2}
 mx:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j]>mx then mx:=a[i,j];
writeln('Максимальный элемент матрицы=',mx);
j:=1;
while j<=m do
 begin
  i:=1;
  k:=0;
  while(i<=n)and(k=0) do
  if a[i,j]=mx then k:=1
  else inc(i);
  if k=1 then
   begin
    
    if j=m-1 then
    for i:=1 to n do
    a[i,m]:=0
    else
     begin
      for k:=m downto j+2 do
      for i:=1 to n do
      a[i,k]:=a[i,k-1];
      for i:=1 to n do
      a[i,j+1]:=0;
     end;
    inc(j,2);
   end
  else inc(j);
 end;
writeln('Вставка столбцов из 0 за столбцами с максимальным');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
{пункт 3}
j:=1;
while j<=m do
 begin
  k:=0;
  i:=1;
  while(i<=n)and(k=0) do
  if a[i,j]<0 then k:=1
  else inc(i);
  if k=1 then
   begin
    if j<m then
     begin
      for k:=j to m-1 do
      for i:=1 to n do
      a[i,k]:=a[i,k+1];
     end;
    dec(m);
   end
  else inc(j);
 end;
writeln('Удаление столбцов с отрицательными элементами');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
 
 
 
{пункт 4}
for i:=1 to n do
 begin
  x:=a[i,1];
  a[i,1]:=a[i,m];
  a[i,m]:=x;
 end;
writeln('Обмен первого и последнего столбцов');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
end.
ругается на dec(m) в третьем пункте ошибка Program1.pas(90) : Данный объект не может быть передан как var-параметр
Ответ: Нельзя объявлять константами размеры матрицы, если Вы будете их менять.
Вопрос: Нужно создать редирект сайта случайным образом, Случайный редирект на 1 из 3 сайтов

Мне нужно написать код или скрипт чтобы при переходе на сайт сразу происходил редирект на 1 из 3 других сайтов случайным образом.
Как это сделать не знаю, прошу вашей помощи)
Ответ: Ок, спасибо , теперь я всё понял.
Вопрос: Ввод букв случайным образом

Здравствйте подскажите как можно вывести букы и цифры случайным образом:
Например, чтобы появлось: 1АЕТ5. Интересует именно генерация случайных чисел, что с ними делать дальше я знаю
Ответ:
Тема старая, но может кому пригодится красивое решение.
PHP:

  1.  
  2. $code = '';
  3. for($i=0;$i<4;$i++)
  4.     $code .= ((0,1) ? (48, 57) : (65, 90));
  5. echo $code;
  6.