Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Посимвольный случайный вывод кириллицы (https://javascript.ru/forum/misc/75160-posimvolnyjj-sluchajjnyjj-vyvod-kirillicy.html)

Paramonov 07.09.2018 22:09

Посимвольный случайный вывод кириллицы
 
Друзья, изучаю js и пишу скрипт, но в ходе написания столкнулся с проблемой. Обшарил весь этот сайт и Гугл - конкретного решения нет. Задача: необходимо вывести случайный элемент из массива и повторить это тысячу раз, не прерывая строки. Я хочу сделать это по нажатию кнопки, чтобы не обновлять страницу для получения нового результата, но даётся с огромной сложностью понимание вывода информации к пользователю(return, result etc). Буду рад, если поможете объяснить, как добиться поставленной цели. Вот кусок кода, что мне удалось слепить на данный момент.

function randomInteger(min, max) { 
var rand = min + Math.random() * (max + 1 - min); 
rand = Math.floor(rand); 
return rand; } 

var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", " ", " ", " ", " ", ",", "."];

var i = 0;
for (i; i<1000; i++) 
{
    document.write();
}

рони 07.09.2018 22:17

Paramonov,
https://learn.javascript.ru/modifying-document
https://learn.javascript.ru/introduction-browser-events

рони 07.09.2018 22:29

бредогенератор текста
 
Paramonov,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <input type="button" id="button" value="Кнопка" />
 <div id="text"></div>
<script>
var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", " ", " ", " ", " ", ",", "."];

function createStr(num, arr)
{
   var str = '';
   for (var i = 0; i < num; i++) {
       var a = Math.floor(Math.random() * arr.length);
       str += arr[a]
   }
   return str
}
  button.onclick = function() {
     text.innerHTML = createStr(1000, alphabet)
  };
</script>


</body>
</html>

j0hnik 07.09.2018 23:49

<input type="button" id="button" value="Кнопка" />
 <div id="text"></div>
<script>
var rnd =(min, max)=> Math.floor(Math.random() * (max - min)) + min;
var arr = [' ',',','.'];
  button.onclick = function() {
  	var str = '', i = 1000;
  	while (i--) {
  		var num = rnd(1040, 1107);
  		if(num<=1103) str+= String.fromCharCode(num);
  		else str+= arr[num-1104];
  	}
     text.innerHTML = str;
  };
</script>

MallSerg 07.09.2018 23:58

Недавно тоже столкнулся с похожей задачей нужна была рандомная строка для запроса multipart/form-data
<!DOCTYPE html><html><head>
<meta charset="utf-8"></head>
<body>
 <input type="button" id="but" value="Кнопка" />
 <div id="textout"></div>
<script>
var createStr = (p,str)=> { // Функция возвращает "p" случайно выбранных символов из строки "str"
	let r = '';
	while(--p) {
		r += str[ Math.round ( Math.random()*(str.length-1)) ]
	} 
return r};

but.onclick = function() {
     textout.innerHTML = createStr(1000, "Эй, жлоб! Где туз? Прячь юных съёмщиц в шкаф.")
};
</script>

Paramonov 08.09.2018 07:17

Спасибо большое!

Paramonov 09.09.2018 09:53

Я продолжаю работать над этим алгоритмом и мне нужно было ловить количество итераций, за которое алгоритм выведет нужное значение. С двумя символами работает прекрасно, но уже на трёх зависает наглухо. И мне бы понять, оно насовсем или мощностей каких не хватает, датчика прогресса то нет. Самое плохое, что я хотел сделать проверку на тысячу символов, а тут три зависают. Есть мысли у вас, как это обойти?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <input type="button" id="button" value="Значение" />
 <div id="text"></div>
 <div id=iterations></div>
 
<script>
var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", " ", " ", " ", " ", " ", " ", " ", " ", ",", "."];

function createStr(num, arr)
{
   var str = '';
   for (var i = 0; i < num; i++) {
       var a = Math.floor(Math.random() * arr.length);
       str += arr[a]
   }
   return str
}


  button.onclick = function() {
  var iter1 = 0;
  text.innerHTML = 'f';
  var elem = iterations.innerHTML = iter1;
    while (text.innerHTML != 'Рай') {
    iter1++;
     text.innerHTML = createStr(3, alphabet);
     var elem = iterations.innerHTML = iter1;
     }
  };
</script>


</body>
</html>

рони 09.09.2018 10:06

Paramonov,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <input type="button" id="button" value="Значение" />
 <div id="text"></div>
 <div id=iterations></div>

<script>
var alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", " ", " ", " ", " ", " ", " ", " ", " ", ",", "."];

function createStr(num, arr)
{
   var str = '';
   for (var i = 0; i < num; i++) {
       var a = Math.floor(Math.random() * arr.length);
       str += arr[a]
   }
   return str
}


  button.onclick = function() {
  var iter1 = 0, str = '';
    while (str != 'Рай') {
    iter1++;
    str = createStr(3, alphabet);
        }
    text.innerHTML = str;
    iterations.innerHTML = iter1;
  };
</script>


</body>
</html>

рони 09.09.2018 10:30

Цитата:

Сообщение от Paramonov
я хотел сделать проверку на тысячу символов

76 в степени 1000 !!! и это если повезёт :cray: у вас есть сотня другая свободных мощностей на фотонных процессорах?

Paramonov 09.09.2018 10:47

Цитата:

Сообщение от рони (Сообщение 494280)
76 в степени 1000 !!! и это если повезёт :cray: у вас есть сотня другая свободных мощностей на фотонных процессорах?

Большое вам спасибо за помощь. Эх, на четырех уже зависает. Ладно, не судьба, может быть лет через 20. В общем-то, я хотел сделать имитацию из одного выражения: "Если за печатную машинку посадить обезьяну, то когда-нибудь она напечатает "Войну и мир"." Мне стало интересно, за сколько итераций в среднем обезьяна напечатает читаемый текст хотя бы в 1000 символов. Ещё раз спасибо.


Часовой пояс GMT +3, время: 03:01.