Es hat keinen Sinn, dir weiter zu antworten, weil du einfach so wenig von Mathematik verstehst und die Antworten von Experten ohnehin nicht für vernünftig hältst.
Und nein, ein vernünftiger Programmierer bedient sich den Hilfsmitteln und Resultaten der Mathematik.
Dass du einen Bereich zwischen 0,5 und fast 1 mit einem Bereich zwischen fast 1 und 1 vergleichst, zeigt doch wunderbar, dass dir genau das Wissen fehlt, was du brauchst.
Wenn du das Intervall \([0;1)\) verwendest, lässt du außer der 1 ja eben nichts weg. Das ändert allerdings nichts an der Wahrscheinlichkeit, in einem bestimmten Bereich zu landen. Aber da du von Mathematik offenbar nichts wissen möchtest, braucht man dir das nicht weiter erläutern.
Eine kurze Simulation mit der Bedingung rand(1) < 0,95 liefert bei 100 Millionen Versuchen übrigens eine Trefferanzahl von 95002728, was einer Quote von 95,002728 % entspricht. Es macht also genau das, was es soll.
Es geht auch nicht darum, eine bestimmte Trefferwahrscheinlicheit zu implementieren, sondern darum, herauszufinden, ob die Verteilung der Zufallszahlen gleichmaessig ist. Warum sie gleichmaessig zu sein scheint finde ich allerdings sehr erklaerungsbeduerftig, denn es koennte genausogut anders sein. Anscheinend ist der Zufall nicht zufaellig, sonst waere die Verteilung immer anders.
Verwende keine mathematischen Begriffe, die du nicht verstehst. Nur weil etwas zufällig stattfindet, heißt es nicht, dass die Verteilung ebenso zufällig sein muss. Als Programmierer solltest du außerdem wissen, dass man mit den entsprechenden Methoden auch nur Pseudo-Zufallszahlen erzeugt, da sie ja intern berechnet werden. Allerdings dürfte das für die meisten praktischen Anwendungen vollkommen ausreichend sein. Das "Warum" muss man dann über die Implementierung der einzelnen rand-Methoden klären.