Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 30.07.2012, 02:40
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Maxmaxmахimus,
Та вообще зависимость факториальная - но имхо нун рыть в сторону рядов - что-то мне напоминает
Ко всему прочему - мон найти вариации делителей всех чисел до 100, этого должно хватать для боль мень равномерной статистики и оценки при непопадании на простые числа(ну и их комбинации

Последний раз редактировалось Deff, 30.07.2012 в 02:45.
Ответить с цитированием
  #42 (permalink)  
Старый 30.07.2012, 12:04
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Прошу прошения, если данный варинат уже был, распределяю добавки к минимальному значению.
Последнее число, в принципе, и не может быть случайным по самой формулировке задачи (оно закономерно является разницей расчленяемого числа и суммы предыдущих полученных чисел).
<script>
window.onload = function () {
	function f(num, part, min) {
		if (num / part < min) {
			alert('не реально');
			return;
		}
		var rest = num - min * part; 
		var mas = [];
		var elem = 0;
		for (var i = 1; i < part; i++) {
			elem = Math.round(rest * Math.random());
			mas.push(min + elem); 
			rest -= elem; 
		}
		mas.push(min + rest);
		alert(mas);
	}
	
	f(130, 3, 20)
}
</script>
Ответить с цитированием
  #43 (permalink)  
Старый 30.07.2012, 12:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Есть мысля рекурсивно дробить число на две рандомные половики пока не получится нужное количество частей, но тестить сейчас лень.)
__________________
29375, 35
Ответить с цитированием
  #44 (permalink)  
Старый 30.07.2012, 12:36
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

bes,
Вроде родил идентичное Вашему:

<style type="text/css">input{margin:4px;}</style>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<input id=Number type="text" value="100" > Число <br />
<input id=Nparts  type="text" value="4" > Кол-во разбиваемых частей<br />
<input id="Min-a"  type="text" value="1" >   Минимальное значение каждой части<br />
<input id="Out-2"  type="text" size="35" value=""> Выходной массив разбивки  <br />
<input type="button" value="Разбить" onClick="TstNum()">




<script type="text/javascript">
function TstNum(){
 var a = parseInt($('#Number').val());
 var b = parseInt($('#Min-a').val());
 var N = parseInt($('#Nparts').val()); //alert(a+'||'+b+'||'+N)

 var Arr = [];
 var Summ = 0;

    for(var i=0; i<N; i++){
       Arr[i] = Math.random();
       Summ+=Arr[i];
    }

 var DELTA_FromParts = (a - b*N);
 var Ost = a;
    for(var i=0; i<N-1; i++){
       Arr[i] = b + parseInt((DELTA_FromParts*Arr[i])/Summ)
       Ost-= Arr[i];
    }  Arr[N-1] = Ost;


   //alert(Arr);

   b=Arr.join();c=eval(Arr.join('+'));
  $("#Out-2").val(b+'='+c);



}
</script>

Последний раз редактировалось Deff, 30.07.2012 в 18:18.
Ответить с цитированием
  #45 (permalink)  
Старый 30.07.2012, 17:47
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

<div id="div">
	<input value="130"> Число <br>
	<input value="3"> Количество частей <br>
	<input value="20"> Минимальное значение части<br>
	<input type="button" value="Разбить">
</div>

<script>
window.onload = function () {
	function f(num, part, min) {
		if (num / part < min) {
			alert('не реально');
			return;
		}
		var rest = num - min * part; 
		var mas = [];
		var elem = 0;
		for (var i = 1; i < part; i++) {
			elem = Math.round(rest * Math.random());
			mas.push(min + elem); 
			rest -= elem; 
		}
		mas.push(min + rest);
		alert(mas);
	}
	
	function check (elem) {
		if (isNaN(elem) == false && elem.value != '') {
			return true;
		} else {
			return false;
		}
	}
	
	var div = document.getElementById('div');
	
	div.children[6].onclick = function () {
		 var num = parseInt(div.children[0].value); 
		 var part = parseInt(div.children[2].value);
		 var min = parseInt(div.children[4].value);
		 if (check(num) && check(part) && check(min)) {
			f (num, part, min);
		} else {
			alert('в полях есть не число')
		}
	}
	
}
</script>

PS: добавил поля для ввода
Ответить с цитированием
  #46 (permalink)  
Старый 30.07.2012, 17:59
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Увидел разницу

bes, берёт рандом от остатка за вычетом предыдущего рандома, - что не айс - поскольку увеличивает вероятность больших размеров для первых элементов деления и уменьшает для конечных.
я же беру рандом для всех частей, с последующим нормированием каждого на общую сумму рандомов - что обеспечивает независимость каждой части
Ответить с цитированием
  #47 (permalink)  
Старый 30.07.2012, 18:07
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Deff, у меня распределение настолько случайно, насколько случайна сама Math.random() (+ только в том, что это делается за part (количество частей) шагов без лишних проверок)
Сообщение от Deff
bes, берёт рандом от остатка за вычетом предыдущего рандома, - что не айс - поскольку увеличивает вероятность больших размеров для первых элементов деления и уменьшает для конечных.
Если потестить, то с этим всё вроде нормально

Последний раз редактировалось bes, 30.07.2012 в 18:10.
Ответить с цитированием
  #48 (permalink)  
Старый 30.07.2012, 18:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от bes
Если потестить, то с этим всё вроде нормально
bes,
Оки - вызови функцию 100 раз и запиши среднее арифметическое
для 1-й;2-й; и 3-й доли - они будут убывать!

Параметры разделения и начальных условий - не меняем
Ответить с цитированием
  #49 (permalink)  
Старый 30.07.2012, 18:31
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Deff, 100 раз не тестил (не до этого ), если не нормально, ок, верю, оставляю только первую фразу
Сообщение от bes
у меня распределение настолько случайно, насколько случайна сама Math.random()
Ответить с цитированием
  #50 (permalink)  
Старый 30.07.2012, 18:45
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от Deff Посмотреть сообщение
bes,
Оки - вызови функцию 100 раз и запиши среднее арифметическое для 1-й;2-й; и 3-й доли - они будут убывать!

Параметры разделения и начальных условий - не меняем
Да, чаще всего самая большая - это первая доля! Намного чаще остальных!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать JavaScript ! Alamogoro Общие вопросы Javascript 4 24.05.2012 19:11
Помогите написать скрипт !!! Zander Элементы интерфейса 10 19.01.2012 14:40
Помогите плисс написать скрипт Gnusmus Events/DOM/Window 6 17.08.2011 15:51
Генератор случайных чисел. Помогите написать. Teenager Я не знаю javascript 5 05.01.2011 19:15
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48