Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Neznáte program, který umí vytvářet takto náhodné kombinace čísel?

Ahoj,

hledám program nebo stránku, která by uměla vytvořit 4 000 náhodných kombinací čísel 1 a 2 v délce 34 znaků za sebou. Samozřejmě neopakujících se kombinací. Na něco podobného jsem narazil a myslím, že to bylo hned na první stránce Googlu. Ale at dělám co dělám, nemůžu to už najít. Radši dodám, že jakýkoliv generátor čehokoliv co neumí přesně to co chci nebo generuje menší počet kombinací je mi k ničemu. Je to pro mě docela důležité.

Děkuji.

Řešení:

Napr Excel (ale pár minút to trvá - počet vygenerovaných, na duplicitu odkontrolovaných kombinácií sa zapisuje do bunky B2)

Sub Komb()

Dim Komb As String
Dim Prvok As String


Columns("A:A").NumberFormat = "@"

MinValue = 1
MaxValue = 2

Randomize

For j = 1 To 4000
Range("B1") = j
    
Opakuj:
    For i = 1 To 34
        Prvok = Format(Int((MaxValue - MinValue + 1) * Rnd) + MinValue, "@")
        Komb = Komb & Prvok
    Next i
    
    Range("A" & j) = Komb
    
    If j > 1 Then
        For k = 1 To j - 1
            If Range("A" & j) = Range("A" & k) Then GoTo Opakuj
        Next k
    End If
    
        Komb = ""
Next j

MsgBox "Hotovo"

End Sub
P.S. určite existujú rafinované, na rýchlosť vykonania neporovnateľne lepšie algoritmy, ale keďže ich nepoznám, tak som napísal postup, akým by to manuálne robil normálny človek :-)

V C# např:

class Program
{
    static void Main(string[] args)
    {
        var random = new Random();
        var numbers = new HashSet<long>();
        using (var sw = new StreamWriter("numbers.txt"))
        {
            for (var i = 0; i < 4000; i++)
            {
                long number;
                do
                {
                    number = (long)(17179869184 * random.NextDouble());
                }
                while (numbers.Contains(number));
                numbers.Add(number);
                sw.WriteLine(Convert.ToString(number, 2).Replace('0', '2').PadLeft(34, '2'));
            }
        }
    }
}
Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
V C# např: class Program { static void Main(string[] args) { var random = new Random(); var numbers…
Wikan 03.12.2016 19:05
Wikan
Skvělé! Přesně co jsem potřeboval, děkuji moc. Děkuji všem za rady a pomoc.
UživatelM 05.12.2016 12:31
UživatelM
Tak si prosíme fajočku za vyriešený problém ;-) poslední
robert13 05.12.2016 15:02
robert13

V C# např:

class Program
{
    static void Main(string[] args)
    {
        var random = new Random();
        var numbers = new HashSet<long>();
        using (var sw = new StreamWriter("numbers.txt"))
        {
            for (var i = 0; i < 4000; i++)
            {
                long number;
                do
                {
                    number = (long)(17179869184 * random.NextDouble());
                }
                while (numbers.Contains(number));
                numbers.Add(number);
                sw.WriteLine(Convert.ToString(number, 2).Replace('0', '2').PadLeft(34, '2'));
            }
        }
    }
}

Zpět do poradny Odpovědět na původní otázku Nahoru