AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Computer zahlen raten beibringen

Ein Thema von Newbie44 · begonnen am 29. Apr 2007 · letzter Beitrag vom 29. Apr 2007
Antwort Antwort
Newbie44
(Gast)

n/a Beiträge
 
#1

Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:01
Hallo,

ich möchte einen algorithmus schreiben, mit dem der computer zahlen erraten soll. und zwar nicht irgendwie, mit so wenig versuchen wie möglich.

der benutzer gibt eine variable ein. der computer soll eine zufallszahl generieren (soweit bin ich schon längst), und dann so schnell es geht die zahl rausfinden.

wie sollte ich diesen algo schreiben?

wie bringe ich dem computer bei, dass er so wenig versuche wie möglich dafür braucht? und wie setze ich das programm technisch um?

ich hatte erst an Rekursion gedacht, also sprich das der computer eine funktion aufruft, dort die zufällig gezogene zahl mit der von der benutzer eingegebenen zahl vergleich und die funktion dann einen jeweiligen rückgabewert liefert, ob die zahl nun größer sein muss, kleiner sein muss oder direkt die richtige war.

mein problem hier ist nun, wie mach ich das mit den versuchen? der computer kann ja nicht zu seiner zufallszahl immer nur 1 addieren, er muss schon irgendwie wie ein mensch denken.

Für eure Hilfe wäre ich euch sehr dankbar.

Gruß

Sebastian
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:02
Man kann aber den Wertebereich für die Zufallszahl festlegen.
Markus Kinzler
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:07
Er kann ja nach dem Intervallhalbierungsverfahren vorgehen.
D.h. es muss ein Intervall geben, in dem die Zufallszahl liegt. z.B. 0-1000
Delphi-Quellcode:
IntervalHigh := 1000;
IntervalLow := 500;
Dann nimmt er die Zahl in der Mitte
Geraten:=Trunc((IntervalHigh-IntervalLow)/2); Jetzt testet er auf kleiner oder größer und setzt die Oberbzw. untergrenze neu.
Delphi-Quellcode:
if zugroß then
  IntervalHigh:=Geraten
else if zuklein then
  IntervalLow:=Geraten;
Dann fängst du wieder oben an(also bei Geraten:=)
Ich würde keine Rekursion verwenden, ich sehe da an dieser Stelle keinen Vorteil drin.
Benjamin
  Mit Zitat antworten Zitat
Newbie44
(Gast)

n/a Beiträge
 
#4

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:12
vielen dank für eure antworten, ja ich hatte auch schon an so eine begrenzung gedacht, das würde es wirklich einfacher machen. auch ist die idee mit unter und obergrenze gut. das könnte ich auch gut in meine iteration bzw rekursion einbauen.

wenn ich als mensch zahlen rate, dann gebe ich erstmal auch eine zahl ein die in dem eingegebenen intervall liegt. wenn meine zahl zu groß ist schaue ich erst ob sie sehr viel größer bzw nur etwas größer ist

wenn die zahl die ich erraten soll z. B. 300 ist, und das intervall zwischen 0 und 500 ist, dann wähle ich so meistens etwas aus der mitte, also sprich ca. 200 - 270.

die zahl wäre aber in beiden fällen zu klein, also denke ich, es könnte 350 sein, die zahl wäre dann zu groß, somit weis ich die zahl liegt zwischen 250 und 350, dann könnte ich weiter probieren, aber nur in diesem intervall.

ja es stimmt so könnte es gehen.

Hat hier jemand noch eine ausgefuchstere bzw bessere idee?

vielen dank euch allen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:14
Das ist ja mit dem Intervallhalbierungsverfahren gemeint. Auch die binäre Suche bei Binärbäumen basiert auf diesem Prinzip.
Markus Kinzler
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:19
Mal ein Versuch:

Delphi-Quellcode:
var
   Obergrenze, Untergrenze, Zahl, I: Integer;

  //...

  repeat
    I := Random(Obergrenze - Untergrenze) + Untergrenze;
    if I > Zahl then
      Obergrenze := I
      else
      if I < Zahl then
        Untergrenze := I
      else
      Break;
  until false;

  showmessage('Zahl gefunden: ' + IntToStr(I));
Dominik
  Mit Zitat antworten Zitat
Newbie44
(Gast)

n/a Beiträge
 
#7

Re: Computer zahlen raten beibringen

  Alt 29. Apr 2007, 19:30
jupp so gehts, hab ich gerade probiert, ich hatte es ja schon fast, nur das mit der untergrenze hatte vorhin nicht so geklappt,

damit wäre das problem gelöst

vielen dank für alle antworten
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz