자바 모방 다 중 할인 알고리즘 실현
실현 방향:
1. 사용자 가 가격 을 깎 기 시작 할 때 사용자 에 게 가격 을 깎 는 금액 을 배정 하고 분 배 된 금액 을 배열 형식 으로 데이터베이스 에 저장 합 니 다. 2. 친구 가 가격 을 깎 는 것 을 도와 줄 때 순서대로 데이터베이스 에 가서 현재 분 배 된 가격 을 깎 는 금액 을 찾 습 니 다.
알고리즘 은 다음 과 같 습 니 다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
* @author cc
* @Decription
*/
public class ReducePriceUtils {
/**
* 1. *100
* 2. , 1 , ( )*100
*/
private static final int MINMONEY = 1;
private static final int MAXMONEY = 200*100;
/**
* , ,
* N
*/
private static final double TIMES = 3.1;
/**
*
* @param money
* @param count
* @return
*/
private static boolean isRight(int money,int count){
double avg = money/count;
//
if (avgMAXMONEY) {
return false;
}
return true;
}
/**
*
* @param mnoney
* @param minS:
* @param maxS:
* @param count
* @return
*/
private static int randomReducePrice(int money,int minS,int maxS,int count){
// ,
if (count==1) {
return money;
}
// ,
if (minS==maxS) {
return minS;
}
int max=maxS>money?money:maxS;
// ,
int maxY = money-(count-1)*minS;
// ,
int minY = money-(count-1)*maxS;
//
int min = minS>minY?minS:minY;
//
max = max>maxY?maxY:max;
//
return (int)Math.rint(Math.random()*(max-min) +min);
}
/**
*
* @param money
* @param count
* @return
*/
public static List splitReducePrice(int money,int count){
//
if (!isRight(money, count)) {
return new ArrayList<>();
}
//
List list = new ArrayList<>();
// TIMES
int max = (int)(money*TIMES/count);
max = max>MAXMONEY?MAXMONEY:max;
//
int sum = 0;
for(int i=0;i list = splitReducePrice(19799, 10);
System.out.println(list);
}
가격 인하 분배 결과:
sum:19799
[1.65, 3.94, 4.29, 3.44, 1.09, 33.65, 11.41, 43.78, 46.74, 48.0]
여기 서 소수 산정 편 의 를 위해 처음에는 금액 을 100 배로 확대 한 뒤 마지막 에 깎 은 금액 을 산정 할 때 다시 금액 을 100 으로 나 눈 것 이다.
원문의 저자 기술 블 로그:https://www.jianshu.com/u/ac4daaeecdfe 95 후 전단 의 여동생 하나, 읽 기 를 좋아 하고 친 구 를 사 귀 는 것 을 좋아 하 며 업무 중 에 발생 한 문 제 를 여기에 기록 하여 보 이 는 모든 사람 에 게 도움 이 되 기 를 바 랍 니 다.댓 글 교류 환영
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.