Hans Krailsheimer (1888-1958): "Talente finden Lösungen, Genies entdecken Probleme."
Die zu machende App soll probabilistische Simulationen durchführen und visualisieren können. Es geht um das Erstellen und Testen einer solchen App ( Plagiate sind out ).
Hinweis: Pseudo-Zufallszahlen sind auch ein wesentlicher Bestandteil von Sicherheitsarchitekturen und werden für das nachfolgende ESA-Projekt benötigt. Siehe z.B. Sicherheit+Kryptologie und ECMAScript-Beispiele zu Zufallszahlen .
In gewisser Weise können Zufallszahlen das "Unvorhersehbare zufällig simulieren" ( siehe z.B. de.wikipedia Zufallszahlengeneratoren ). Zufallszahlen werden generiert z.B. für:
Strings, Texte, /dev/random als zeichen-orientierte virtuelle Gerätedatei, Nonces, One-Pad, Password,
Time, Erzeugung kryptographischer Schlüssel, Hash, List Randomizer, "aus Quanten-Zufällen",
Integer, Sequence, DNA Protein Sequence, Sets, Gaussian, Stochastik, zentrale Grenzwertsatz,
Color-Code, Audio-Noise, Pregenerated Files, Geographic-Coordinate, usw.
Mögliche Problemstellungen für die self-made-App sind:
Für die Entwicklung von "self-made" Generatoren für Zufallszahlen können die folgenden Bemerkungen hilfreich sein.
function zuf_float( min, max ) { return min + (max - min) * rnd(); } function zuf_int ( min, max ) { return Math.floor( min + (max - min + 1) * rnd() ); } function zuf_char ( min, max ) { return String.fromCharCode( zuf_int(min, max) ); }
Wie started rnd() ? Was meint "seed"?
var dez_num = 69069,
bin_str = dez_num.toString(2),
bin_num = parseInt(bin_str,2);
/*
liefert dez_num = 69069,
liefert bin_str = 10000110111001101,
liefert bin_num = 69069 */
Die ersten 258 Primzahlen:
var prims = [ // 258 Primzahlen 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621]; var von=11, bis=21, prim, bas, r = ["<table border><tr><th>"]; for( i = von; i < bis; i += 1 ) { prim = prims[i]; for( bas = 2; bas < 37; bas += 1 ) { r.push( prim.toString(bas) + '<sub>'+bas+'</sub>' ); } r.push("\n</th><th>\n"); } r = r.join("<br />") + "</th></tr></table>"; alert(r);Ausgabe von bin_str zu den Basen 2 ... 36:
111112 10113 1334 1115 516 437 378 349 3110 2911 2712 2513 2314 2115 1f16 1e17 1d18 1c19 1b20 1a21 1922 1823 1724 1625 1526 1427 1328 1229 1130 1031 v32 v33 v34 v35 v36 |
1001012 11013 2114 1225 1016 527 458 419 3710 3411 3112 2b13 2914 2715 2516 2317 2118 1i19 1h20 1g21 1f22 1e23 1d24 1c25 1b26 1a27 1928 1829 1730 1631 1532 1433 1334 1235 1136 |
1010012 11123 2214 1315 1056 567 518 459 4110 3811 3512 3213 2d14 2b15 2916 2717 2518 2319 2120 1k21 1j22 1i23 1h24 1g25 1f26 1e27 1d28 1c29 1b30 1a31 1932 1833 1734 1635 1536 |
1010112 11213 2234 1335 1116 617 538 479 4310 3a11 3712 3413 3114 2d15 2b16 2917 2718 2519 2320 2121 1l22 1k23 1j24 1i25 1h26 1g27 1f28 1e29 1d30 1c31 1b32 1a33 1934 1835 1736 |
1011112 12023 2334 1425 1156 657 578 529 4710 4311 3b12 3813 3514 3215 2f16 2d17 2b18 2919 2720 2521 2322 2123 1n24 1m25 1l26 1k27 1j28 1i29 1h30 1g31 1f32 1e33 1d34 1c35 1b36 |
1101012 12223 3114 2035 1256 1047 658 589 5310 4911 4512 4113 3b14 3815 3516 3217 2h18 2f19 2d20 2b21 2922 2723 2524 2325 2126 1q27 1p28 1o29 1n30 1m31 1l32 1k33 1j34 1i35 1h36 |
1110112 20123 3234 2145 1356 1137 738 659 5910 5411 4b12 4713 4314 3e15 3b16 3817 3518 3219 2j20 2h21 2f22 2d23 2b24 2925 2726 2527 2328 2129 1t30 1s31 1r32 1q33 1p34 1o35 1n36 |
1111012 20213 3314 2215 1416 1157 758 679 6110 5611 5112 4913 4514 4115 3d16 3a17 3718 3419 3120 2j21 2h22 2f23 2d24 2b25 2926 2727 2528 2329 2130 1u31 1t32 1s33 1r34 1q35 1p36 |
10000112 21113 10034 2325 1516 1247 1038 749 6710 6111 5712 5213 4b14 4715 4316 3g17 3d18 3a19 3720 3421 3122 2l23 2j24 2h25 2f26 2d27 2b28 2929 2730 2531 2332 2133 1x34 1w35 1v36 |
10001112 21223 10134 2415 1556 1317 1078 789 7110 6511 5b12 5613 5114 4b15 4716 4317 3h18 3e19 3b20 3821 3522 3223 2n24 2l25 2j26 2h27 2f28 2d29 2b30 2931 2732 2533 2334 2135 1z36 |
---|
Nützliche Funktionen ( auch für später ).
Übergang von UTF-8 nach byte_chrs:
function byte_chrs_from_utf8_str(utf8) { var byte_chrs = ''; try { byte_chrs = unescape(encodeURIComponent(utf8)); } catch (e) { } return byte_chrs; } function utf8_str_from_byte_chrs(byte_chrs) { var utf8 = ''; try { utf8 = decodeURIComponent(escape(byte_chrs)); } catch (e) {utf8 = ''; } return utf8; }
Übergang von byte_chrs nach hex-String
// Bsp: hex_chars_from_utf8_str("äöüÄÖÜß") liefert "c3a4c3b6c3bcc384c396c39cc39f" function hex_chars_from_utf8_str(utf8) { var i, c, byte_chrs = byte_chrs_from_utf8_str(utf8), hex_chars = ""; for (i = 0; i < byte_chrs.length; i += 1) { c = byte_chrs.charCodeAt(i).toString(16); if (c.length == 2) { hex_chars += c; } else if (c.length == 1) { hex_chars += "0" + c; } } return hex_chars; } // Bsp: utf8_str_from_hex_chrs("c3a4c3b6c3bcc384c396c39cc39f") liefert "äöüÄÖÜß" function utf8_str_from_hex_chrs(hex_chrs) { var byte_chrs = hex_chrs.replace(/([0-9a-f]{2})/g, function (a,c) { return String.fromCharCode(parseInt(c,16));}); return utf8_str_from_byte_chrs(byte_chrs); }
Plagiate sind out!
Viel Freude bei der Ausarbeitung!
Letzter Abgabetermine So 12.00 Uhr