2016-10-27 2 views
0

당신의 도움이 필요합니다. 두 개의 서로 다른 값의 URL 매개 변수 사이에 임의의 숫자를 표시하고 싶습니다.난수 2 값 (최소값)을 반환합니다. C#

이것은 코드입니다. 그것은 exemple 게스트 삽입이 URL 그래서

public class RandomIntController : ApiController 
{ 
    public double Get() 
    { 
     double min = Request.QueryString("min"); 
     double max = Request.QueryString("max"); 
     min = 1; 
     max = 100; 

     Random number = new Random(); 
     return number.NextDouble(); 
    } 
} 

작동하지 않습니다 http://localhost:51832/api/randomint?min=12&max=23 •를

최대 값 (23) 및 최소 값 사이의 임의의 숫자를 표시해야 내 웹 API (12) .

은 내가 attribut 'resquest.queryString()'으로도 몇 가지 오류가 있습니다 그래서 감사는 많은입니다

나에게 도움을 주시기 바랍니다 내 오류를 발견하지 않습니다/

REQUEST.QUERYSTRING ERROR

+0

최소 및 최대는 int입니까? 왜냐하면 당신이 int로 당신이 무작위로 할 수 있기 때문에. 다음 (최소, 최대) 그리고 당신은 원하는 범위에서 번호를 얻을 것이다. –

+0

루프에서이 메서드를 호출하면 항상 매우 똑같은 숫자를 얻을 수 있기 때문에 메서드에서 무작위 인스턴스를 생성하면 안됩니다. 무작위의 생성자는 현재 시간을 시드로 사용합니다. 대신 필드를 사용하거나 매개 변수로 전달하십시오. –

답변

1
int min = (int)Request.QueryString["min"]; 
int max = (int)Request.QueryString["max"]; 
Random number = new Random(); 
return number.Next(min, max); 

QueryString은 메소드가 아니라 키 값 쌍입니다. () 대신 []을 사용하십시오. 또한 코드에서와 마찬가지로 Next 메서드의 매개 변수로 minmax을 전달하십시오.

+0

이것은 min..max-1 범위의 난수를 생성합니다. 출력에'max'를 포함 시키려면'return number.Next (min, max + 1);를 실행하십시오. ' –

+0

@MatthewWatson OP는 포함하지 않고 말합니다. – Imad

+0

"사이"가 모호합니다. 첫 번째와 마지막을 포함하거나 첫 번째와 마지막을 제외하거나 첫 번째를 포함하고 마지막을 제외합니까? 명백한 것이 좋다. –

0

당신이 double maxdouble min이 있고 범위는 [최소, 최대)에 임의의 숫자를 생성하려면이에 의해 생성 된 난수가 max 포함되지 것

Random rng = new Random(); // Declare this once somewhere - don't keep redeclaring it! 
double value = min + rng.NextDouble()*(max - min); 

주 - [ max, min)은 반 개방 간격을 정의합니다.

두 배로하고 싶지 않다면 Imad가 제공 한 답변을 참조하십시오.

1

분수 부분 (예 : 12.443)을 포함하는 "이중"이 필요한지 잘 모릅니다. 필요한 경우 수행 할 수 있습니다. 그러나 이것을 정수라고 생각하십시오.

public int Get() 
    { 
     string minStr = Request.QueryString.Get("min"); 
     string maxStr = Request.QueryString.Get("max"); 


     int min = int.Parse(minStr); 
     int max = int.Parse(maxStr); 

     Random number = new Random(); 
     int value = number.Next(min, max); 
     return value; 
    }