Страницы: 1
RSS
Генерация случайных целых чисел из заданного диапазона значений, чтобы получить заданную сумму
 
Нужно сгенерировать случайные целые положительные числа из заданного диапазона значений, чтобы получить заданную сумму.
Есть число (сумма), его нужно разбить на случайные числа из указанного диапазона значений. Числа целые.\
Например, есть 1000, его нужно разбить на 20 чисел из диапазона от 10 до 100, чтобы в сумме всегда получалось 1000.
Изменено: Shevchuk - 08.07.2019 10:17:29
 
Не очень красивое решение, но рабочее
Код
Sub gen()
Dim arr(1 To 20) As Integer, i As Integer, ir As Integer, ich As Integer
Randomize
Do
    For i = 1 To 19
    arr(i) = Fix(90 * Rnd + 10)
    ir = ir + arr(i)
    Next
    ich = 1000 - ir
    If ich < 10 Or ich > 100 Then
        Erase arr
        ich = 0
        ir = 0
    Else
        arr(20) = ich
        Exit Do
    End If
    
Loop
For i = 1 To 20
    Cells(i, 8).Value = arr(i)
Next
End Sub
Изменено: Fidgy - 08.07.2019 10:27:49
 
Shevchuk,
1. Используя СЛУЧМЕЖДУ генерируете 19 чисел заданного диапазона
2. 20-е число находите как разницу между 1000 и суммой сгенерированных в п.1 19 чисел.
P.S. для ваших условий 20-е число всегда будет больше 100. Ну и 20-е число понятным образом не будет случайным.
 
Fidgy, не могу открыть этот файл в Excel. Мобильная версия открывает, но VBA не работает. Его модно как-то конвертнуть в обычный формат xlsx
 
 Со вспомогательными ячейками можно добиться приемлемых результатов. Жёлтые - вспомогательные, зелёные - результат.
Изменено: Светлый - 08.07.2019 11:01:14
 
Цитата
Shevchuk написал: конвертнуть в обычный формат xlsx
Там макросы не живут

Цитата
Его модно как-то конвертнуть
Если модно - конвертируйте :)
 
Цитата
vikttur написал:
Если модно - конвертируйте
))))
 
Светлый, "файл поврежден". Пытался открыть в Excel 2016
 
Снова вкладываю.
 
Stics, спасибо. Простой и хороший вариант.
Светлый, все равно, "файл поврежден". Попробую на другом компьютере
 
Цитата
Shevchuk написал:
все равно, "файл поврежден"
В старом формате.
 
Похожая тема: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=22953
Страницы: 1
Наверх