Echte Zufallszahlen von Server abrufen



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C (C89, C99 und C11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Der Fehler wurde ja schon genannt, aber so als allgemeine Anmerkung: Neuere Prozessoren (z.B. Intels Ivy Bridge Architektur) bieten auch schon direkt im Prozessor echte Hardwarezufallszahlen mit hohem Durchsatz und echtem Zufall an (RdRand). Für geringe Mengen an echten Zufallszahlen (z.B. als Seed für einen PRNG) bieten auch viele Betriebssysteme schon seit langen Zeiten Echtzufallszahlgeneratoren an, die ihre Entropie aus verschiedenen Quellen im System beziehen (Vorsicht bei virtuellen Maschinen!). Unter Linux z.B. /dev/random, unter Windows gibt's das auch, aber ich weiß nicht, wie es heißt.



  • Danke für's verschieben, hatte übersehen, dass ich mich im falschen Unterforum befand, weil ich über einen Link zu diesem Forum kam.

    An CPU hät ich diese
    http://www.amazon.de/Intel-Desktop-Prozessor-Q9550-Sockel-L2-Cache/dp/B0012WDMNC
    und im Laptop einen Intel(R) Core(TM) i3 CPU M 390 @ 2.67GHz

    Unterstützen diese die Funktion bereits?

    Ich hab nur die "C" entfernt und das extern gelassen, daraufhin kam folgende Fehlermeldung:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

    C:\Users\Verrain>cd desktop

    C:\Users\Verrain\Desktop>gcc t.c -o t
    C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x1e): undefined refer
    ence to \_imp\_\_defineServer' C:\\Users\\Verrain\\AppData\\Local\\Temp\\ccCdSYDJ.o:t.c:(.text+0x34): undefined refer ence to_imp__defineUser'
    C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x42): undefined refer
    ence to \_imp\_\_getInt' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\\Users\\V errain\\AppData\\Local\\Temp\\ccCdSYDJ.o: bad reloc address 0x20 in section.eh_fra
    me'
    c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: final link
    failed: Invalid operation
    collect2.exe: Fehler: ld gab 1 als Ende-Status zurück

    C:\Users\Verrain\Desktop>


  • Mod

    Verrain schrieb:

    Unterstützen diese die Funktion bereits?

    Nein, die Technik ist ziemlich neu (etwas über ein Jahr alt).

    Ich hab nur die "C" entfernt und das extern gelassen, daraufhin kam folgende Fehlermeldung:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

    C:\Users\Verrain>cd desktop

    C:\Users\Verrain\Desktop>gcc t.c -o t
    C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x1e): undefined refer
    ence to \_imp\_\_defineServer' C:\\Users\\Verrain\\AppData\\Local\\Temp\\ccCdSYDJ.o:t.c:(.text+0x34): undefined refer ence to_imp__defineUser'
    C:\Users\Verrain\AppData\Local\Temp\ccCdSYDJ.o:t.c:(.text+0x42): undefined refer
    ence to \_imp\_\_getInt' c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: C:\\Users\\V errain\\AppData\\Local\\Temp\\ccCdSYDJ.o: bad reloc address 0x20 in section.eh_fra
    me'
    c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: final link
    failed: Invalid operation
    collect2.exe: Fehler: ld gab 1 als Ende-Status zurück

    C:\Users\Verrain\Desktop>

    Klingt so, als hättest du die Bibliothek selbst nicht dazu gelinkt. Bloß den Header benutzen reicht nicht, irgendwo muss der Code für die Funktionen ja auch gefunden werden.

    edit: Du zeigst ja sogar die Kommandozeile 👍 . Ja, die Bibliothek fehlt. Da muss noch irgendetwas a la -lbibliotheksname hin (und die Bibliothek muss auch gefunden werden). Falls du eine IDE benutzt, gibt es da bestimmt auch eine komfortable Funktion, um das alles automatisch einzurichten. Ansonsten musst du mal gucken, wie das bei mingw genau geht.



  • *hehe*- die Kommandozeile ist mit draufgerutscht 🙂

    Bin auch gerad bei der Internetrechersche drauf gekommen, dass ich die Bibliothek scheinbar nicht richtig gelinkt habe.

    Werde ich mich morgen nochmal mit befassen, wie das unter MingW richtig geht, bis jetzt hab ich einfach nur MingW\lib einen Ordner c erstellt und dort die header Datei, sowie die lib und DLL-Datei reingeschoben, allerdings ist nach dem Ändern, der .h-Datei doch auch die .lib und die .DLL Datei nicht mehr aktuell, oder?

    Verwende Emacs, aber die Bibliotheken sind doch im Compiler hinterlegt und nicht in der Entwicklerumgebung, oder? (Sry, aber das einbinden von Bibliotheken ist für mich generell Neuland ^^)



  • Entweder du schreibst in der Befehlszeile manuell -lPfadzurDatei oder du fügst das bequem in einem Menü der IDE hinzu.


  • Mod

    Verrain schrieb:

    Verwende Emacs, aber die Bibliotheken sind doch im Compiler hinterlegt und nicht in der Entwicklerumgebung, oder? (Sry, aber das einbinden von Bibliotheken ist für mich generell Neuland ^^)

    Die Bibliotheken selber sind weder im Compiler noch in der IDE, sondern irgendwo im System (aber hoffentlich an einem Ort, wo der Compiler oder die IDE gucken).

    Falls du Schwierigkeiten haben solltest, gibt es zu mingw im Netz bestimmt viele Beschreibungen. Falls das nicht reichen sollte, guck/frag mal im hiesigen Compiler und IDE Unterforum nach.



  • Verrain schrieb:

    allerdings ist nach dem Ändern, der .h-Datei doch auch die .lib und die .DLL Datei nicht mehr aktuell, oder?

    Doch, die beschriebene Schnittstelle ist ja die gleiche, nur dass sie jetzt von C aus und nicht nur von C++ aus zugänglich ist.



  • schau mal hier. eine einfach und günstige lösung für physikalische Zufallserzeugung.

    http://www.ibbergmann.org/1851938.htm

    beste grüße



  • Also bis jetzt habe ich es noch immer nicht hinbekommen, dass die .lib Datei vom Compiler gefunden wird und auch im Compiler Untertopic konnte mir noch niemand weiterhelfen 😞



  • Verrain schrieb:

    Also bis jetzt habe ich es noch immer nicht hinbekommen, dass die .lib Datei vom Compiler gefunden wird und auch im Compiler Untertopic konnte mir noch niemand weiterhelfen 😞

    Am einfachsten wird es sein, wenn Du alle heruntergeladenenen und entzippten Dateien in einen einzigen Ordner packst, z.B. nach C:\Users\Verrain\qrdb. In diesem Ordner befindet sich dann Dein Quelltext und die Dateien:

    qrbg-c.lib
    qrbg-c.dll
    qrbg-c.h
    t.c

    Dann manövrierst Du in der Eingabeaufforderung zu diesem Ordner (cd C:\Users\Verrain\qrdb) und setzt den Pfad zu GCC:

    SET PATH=C:\MinGW\bin;%PATH%

    Dann veränderst Du das Include in Deinem Quelltext:

    #include "qrbg-c.h" // Pfad weg!

    Nun rufst Du GCC auf:

    gcc t.c -o t.exe -L.\ -lqrbg-c

    Es müsste klappen ( nicht richtig getestet 🙄 )

    viele grüße
    ralph

    EDIT: So, nun habe ich getestet. Du musst G++ als Compiler nehmen:

    g++.exe -ot.exe t.c -L.\ -lqrbg-c



  • Vielen vielen Dank 🙂

    Lustig, dass trotz g++ eine c Datei rauskomt 🙂



  • Naaa das war natürlich Müll, da hab ich einen gucken lassen 😉

    Natürlich ist es eine .exe Datei 🙂


Anmelden zum Antworten